spark:打开CSV;保存为分区镶木地板

时间:2016-03-22 04:45:50

标签: sql apache-spark

我需要将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转换为分区镶木地板文件的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

parquet执行一项操作。如果你想分区,你可以在它发生之前调用它:

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