【发布时间】:2016-09-02 02:03:36
【问题描述】:
我正在使用 Spark(2.0) 开发 Spark SQL,并使用 Java API 读取 CSV。
在 CSV 文件中有一个双引号,逗号分隔的列。例如:"Express Air,Delivery Truck"
读取CSV并返回Dataset的代码:
Dataset<Row> df = spark.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.option("header", "true")
.load(filename)
结果:
+-----+--------------+--------------------------+
|Year | State | Ship Mode |...
+-----+--------------+--------------------------+
|2012 |New York |Express Air,Delivery Truck|...
|2013 |Nevada |Delivery Truck |...
|2013 |North Carolina|Regular Air,Delivery Truck|...
+-----+--------------+--------------------------+
但是,我想将Shop Mode 拆分为Mode1 和Mode2 列并作为数据集返回。
+-----+--------------+--------------+---------------+
|Year | State | Mode1 | Mode2 |...
+-----+--------------+--------------+---------------+
|2012 |New York |Express Air |Delivery Truck |...
|2013 |Nevada |Delivery Truck|null |...
|2013 |North Carolina|Regular Air |Delivery Truck |...
+-----+--------------+--------------+---------------+
我有什么方法可以使用 Java Spark 做到这一点?
我尝试使用 MapFunction,但 call() 方法没有返回 Row。
Ship Mode 将是动态的,即 CSV 可能包含一种或两种船舶模式。
谢谢。
【问题讨论】:
标签: java apache-spark apache-spark-sql spark-dataframe