我需要将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)