火花:打开CSV;另存为分区镶木地板



我需要将CSV文件转换为分区的镶木地板文件。我找不到正确的技术来做这件事。我将CSV作为DF放入,因为数据是从数据库(SAP HANA)导出的,我正在解析表的"create.sql"以自动创建数据帧。我将使用这种技术处理数千个表。

var df_sql=s"""CREATE TEMPORARY TABLE CDHDR_MRP_DF (MANDANT VARCHAR(3),
OBJECTCLAS VARCHAR(15) , OBJECTID VARCHAR(90) , CHANGENR VARCHAR(10), 
USERNAME VARCHAR(12) , UDATE VARCHAR(8) , UTIME VARCHAR(6) 
, TCODE VARCHAR(20) , PLANCHNGNR VARCHAR(12) , ACT_CHNGNO VARCHAR(10) 
, WAS_PLANND VARCHAR(1) , CHANGE_IND VARCHAR(1) , LANGU VARCHAR(1) 
, VERSION VARCHAR(3) , _DATAAGING VARCHAR(8)      ) 
USING com.databricks.spark.csv OPTIONS (path "$vCsv")  """
vc.sql(df_sql)

我将其转换为RDD,然后将其保存为Parquet:

var rdd=vc.sql(s"""SELECT * from $vDF_Table""")
rdd.write.mode("overwrite").parquet(vOutputPath)

这是有效的。如果我添加'.partitionBy("USERNAME")',则错误消息为

<console>:121: error: value partitionBy is not a member of Unit

将CSV转换为分区拼花地板文件的正确技术是什么?

parquet执行一个操作。如果你想分区,你必须在它发生之前调用它:

rdd.write.partitionBy("foo").mode("overwrite").parquet(vOutputPath)

相关内容

最新更新