我正在尝试根据存储在表中的值创建一个csv:
| col1 | col2 | col3 |
| "one" | null | "one" |
| "two" | "two" | "two" |
hive > select * from table where col2 is null;
one null one
我使用以下代码获取csv:
df.repartition(1)
.write.option("header",true)
.option("delimiter", ",")
.option("quoteAll", true)
.option("nullValue", "")
.csv(S3Destination)
Csv我得到:
"col1","col2","col3"
"one","","one"
"two","two","two"
预期的Csv:没有双值的空值
"col1","col2","col3"
"one",,"one"
"two","two","two"
任何帮助都要知道数据框编写者是否有选项来执行此操作。
答案 0 :(得分:2)
您可以使用udf方法并应用于列(在上面重新分区的datafrmae上使用withColumn
),其中双引号空字符串的可能性如下所示
sqlContext.udf().register("convertToEmptyWithOutQuotes",(String abc) -> (abc.trim().length() > 0 ? abc : abc.replace("\"", " ")),DataTypes.StringType);
String
使用replace
方法完成工作。
val a = Array("'x'","","z")
println(a.mkString(",").replace("\"", " "))
将生成'x',,z