Spark支持条款吗?

时间:2017-05-15 12:34:36

标签: hadoop apache-spark

我在spark中有scp file.txt user@host:abc/ ssh user@host 'chmod 755 abc/file.txt' 表,其中包含属性id和name(包含数据),另一个表employee_1具有相同的属性,我想通过增加id值来加载数据+1 < / p>

我的With Clause如下所示:

employee_2

执行步骤:

我在HDFS位置有一个文件(带数据)。

  1. 根据hdfs位置创建RDD。
  2. RDD到Hive临时表
  3. 从临时表到Hive目标(employee_2)。
  4. 当我从后端运行测试程序时它的成功。但是数据没有加载。 WITH EXP AS (SELECT ALIASNAME.ID+1 ID, ALIASNAME.NAME NAME FROM employee_1 ALIASNAME) INSERT INTO TABLE employee_2 SELECT * FROM EXP; 是空的。

    注意: 如果在Hive中运行上面的with子句,它将成功并且数据将加载。但是在火花中它在1.6?

    中赢了

1 个答案:

答案 0 :(得分:2)

WITH语句不是问题,而是导致问题的INSERT INTO语句。

这是一个使用.insertInto()样式而不是&#34; INSERT INTO&#34;的工作示例。 SQL:

val s = Seq((1,"foo"), (2, "bar"))
s: Seq[(Int, String)] = List((1,foo), (2,bar))
val df = s.toDF("id", "name")
df.registerTempTable("df")
sql("CREATE TABLE edf_final (id int, name string)")
val e = sql("WITH edf AS (SELECT id+1, name FROM df cook) SELECT * FROM edf")
e.insertInto("edf_final")

另一个选择是使用df.write.mode("append").saveAsTable("edf_final")样式。

相关SO:"INSERT INTO ..." with SparkSQL HiveContext