如何使用scala将源表(120列)与目标表(40列)映射到spark?

时间:2016-07-16 04:02:03

标签: scala dictionary apache-spark dataframe etl

我是scala的初学者,火花。

这是我的问题。

我有两张桌子。 源表有120列和多行。 (product_no,product_name,product_size,product_price,discount_rate,...)。 另一个目标表有40列和多行。 (items_id,seller,items_price,items_name,...)。

我想将源表映射到目标表。 我有一个csv文件,源表的数据在csv文件中。

(基于目标表)  1. items_id< => product_no  2. seller = null或""(空字符串)。因为源表没有卖家列。  3. items_price< => PRODUCT_PRICE  4. items_name< =>产品名称  5. ...

我尝试使用函数withColumn(),withColumnRenamed(),drop()。但它有很多列,我在构建时遇到错误。 (org.jetbrains.jps.incremental.scala.remote.ServerException,java.lang.StackOverflowError)

我希望用" class"解决这个问题。或" dataframe.map()"如果可能的话。

** 最后,我想要一个来自目标表的数据帧。因此,我将使用数据框插入带有hiveql的hadoop表。

请帮助。谢谢。

val hiveContext = new HiveContext(sparkContext)
hiveContext.sql("create table if not exists taget_table (items_id string, seller string, items_price string, items_name string, ....")

val sourceData = hiveContext.read.format("com.databricks.spark.csv").option("header", true").load(".../csv.file")
...
...
(What should I do...?)

0 个答案:

没有答案