sedona(Geospark)读取csv
package com.grady.sedona
import org.apache.sedona.sql.utils.SedonaSQLRegistrator
import org.apache.sedona.viz.core.Serde.SedonaVizKryoRegistrator
import org.apache.spark.serializer.KryoSerializer
import org.apache.spark.sql.SparkSession
object SedonaReadCsv {
// hdfs 文件位置
val csvPointInputLocation = "/tmp/jiang/" + "testpoint.csv"
def main(args: Array[String]): Unit = {
val ss:SparkSession = SparkSession.builder()
.config("spark.serializer",classOf[KryoSerializer].getName)
.config("spark.kryo.registrator", classOf[SedonaVizKryoRegistrator].getName)
.appName("SedonaAnalysisScv").getOrCreate()
SedonaSQLRegistrator.registerAll(ss)
readCsv(ss)
ss.stop()
}
def readCsv(ss: SparkSession): Unit = {
val pointCsvDF = ss.read
.format("csv")
.option("delimiter",",")
.option("header","false")
.load(csvPointInputLocation)
pointCsvDF.createOrReplaceTempView("test_point_csv")
pointCsvDF.show(10)
val pointDF = ss.sql("select ST_Point(cast(test_point_csv._c0 as Decimal(24,20)),cast(test_point_csv._c1 as Decimal(24,20))) as pointshape from test_point_csv")
pointCsvDF.createOrReplaceTempView("test_point")
pointDF.show()
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
spark-practise
org.example
1.0-SNAPSHOT
4.0.0
sedona
8
8
org.apache.spark
spark-core_${scala.binary.version}
${spark.version}
provided
org.apache.spark
spark-sql_${scala.binary.version}
${spark.version}
provided
org.apache.spark
spark-yarn_${scala.binary.version}
${spark.version}
provided
org.apache.sedona
sedona-core-3.0_2.12
1.1.1-incubating
org.apache.sedona
sedona-sql-3.0_2.12
1.1.1-incubating
org.apache.sedona
sedona-viz-3.0_2.12
1.1.1-incubating
org.locationtech.jts
jts-core
1.18.0
src/main/resources
true
net.alchim31.maven
scala-maven-plugin
3.2.1
1.8
1.8
${scala.version}
scala-compile-first
process-resources
add-source
compile
scala-test-compile
process-test-resources
testCompile
org.apache.maven.plugins
maven-shade-plugin
3.2.1
org.slf4j:*
package
shade
false
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
执行spark-submit --master yarn --driver-memory=2G --class com.grady.sedona.SedonaReadCsv /app/data/appdeploy/sedona-1.0-SNAPSHOT.jar
日志:
+----+-----+
| _c0| _c1|
+----+-----+
| 1.1|101.1|
| 2.1|102.1|
| 3.1|103.1|
| 4.1|104.1|
| 5.1|105.1|
| 6.1|106.1|
| 7.1|107.1|
| 8.1|108.1|
| 9.1|109.1|
|10.1|110.1|
+----+-----+
+------------------+
| pointshape|
+------------------+
| POINT (1.1 101.1)|
| POINT (2.1 102.1)|
| POINT (3.1 103.1)|
| POINT (4.1 104.1)|
| POINT (5.1 105.1)|
| POINT (6.1 106.1)|
| POINT (7.1 107.1)|
| POINT (8.1 108.1)|
| POINT (9.1 109.1)|
|POINT (10.1 110.1)|
|POINT (11.1 111.1)|
|POINT (12.1 112.1)|
|POINT (13.1 113.1)|
|POINT (14.1 114.1)|
|POINT (15.1 115.1)|
|POINT (16.1 116.1)|
|POINT (17.1 117.1)|
|POINT (18.1 118.1)|
|POINT (19.1 119.1)|
|POINT (20.1 120.1)|
+------------------+
only showing top 20 rows