【发布时间】:2017-12-08 14:14:55
【问题描述】:
鉴于我可以让下面的这些单例插入语句像另一个堆栈溢出问题一样工作(谢谢),那么
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("CREATE TABLE IF NOT EXISTS e360_models.employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
sqlContext.sql("insert into table e360_models.employee select t.* from (select 1210, 'rahul', 55) t")
sqlContext.sql("insert into table e360_models.employee select t.* from (select 1211, 'sriram pv', 35) t")
sqlContext.sql("insert into table e360_models.employee select t.* from (select 1212, 'gowri', 59) t")
val result = sqlContext.sql("FROM e360_models.employee SELECT id, name, age")
result.show()
如果想从注册为临时表的 SPARK DF 中插入选择到已经存在的 Hive 表,该怎么办?我似乎无法让它工作。事实上可能吗?
使用 1.6 SPARK。对创建一个 la CTAS 表不感兴趣,而是按照上面的方法插入,但是批量插入,例如
sqlContext.sql("INSERT INTO TABLE default.ged_555 SELECT t.* FROM mytempTable t")
【问题讨论】:
-
如果您对 CTAS 不感兴趣,请参阅以下方法。
-
一切正常,只是没有插入任何内容,但没有错误。
-
对不起!我还没有看到这条消息..在下面的答案中的 write.mode 之前,您可以打印 df.show() 以便我们可以验证数据是否存在于 df 中。如果它在那里,它也应该插入。
-
既然你说没有错误也没有插入,我更新了下面的代码,请检查。另外请添加@myname 通知我,否则我不会收到通知。谢谢!
标签: apache-spark hive