先来描述一下问题:

如果你是从基于文本的数据源来创建DataFrame的,当你将DataFrame注册为临时表后,如果对这个临时表进行insert into 操作,会抛出异常的。

问题答案参见:http://apache-spark-user-list.1001560.n3.nabble.com/How-to-direct-insert-vaules-into-SparkSQL-tables-td11851.html

no, spark sql can not insert or update textfile yet, can only insert into parquet files 

but, 

people.union(new_people).registerAsTable("people") 

could be an idea.

后来再对基于parquet的DataFrame进行insert into 操作时也出问题,后来发现从这里找到了答案:

http://stackoverflow.com/questions/33923348/insert-into-with-sparksql-hivecontext

原因就是语法不对。

原来的语法:insert into people(age,name) values (10,'francis')

修改后的语法:insert into table people select t.* from (select 10,'francis') t

        // 首先还是创建SparkConf
SparkConf conf = new SparkConf()
.setMaster("local")
.setAppName("HiveDataSource");
// 创建JavaSparkContext
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext=new SQLContext(sc); DataFrame peopleDF=sqlContext.read().parquet("hdfs://spark2:9000/francis/spark-core/people2.parquet"); peopleDF.show(); peopleDF.registerTempTable("people"); qlContext.sql("insert into table people select t.* from (select 25,'francis') t");
//sqlContext.sql("insert into table people (age,name) values (25,'francis')"); 错误 peopleDF.show();

I've had the same problem (Spark 1.5.1), and tried different versions.

Given

sqlContext.sql("create table my_table(id int, score int)")

The only versions that worked looked like this:

sqlContext.sql("insert into table my_table select t.* from (select 1, 10) t")
sqlContext.sql("insert into my_table select t.* from (select 2, 20) t")

最新文章

  1. WCF入门教程3——WCF通信模式
  2. 如何使用mybatis《二》
  3. ASP.NET Web API路由规则(二)
  4. C/C++ 位运算符
  5. Asp.Net生命周期系列三
  6. Event Handling in Spring
  7. 本来运行的好的Ajax.dll怎么突然不起作用了
  8. android系统网络信号强弱参数之ecsq指令参数说明
  9. C# ReferenceEquals(), static Equals(), instance Equals(), 和运算行符==之间的关系
  10. 关于lvs+keepalived只加入一台realserver问题
  11. Infinite scroll has been called autopagerize, unpaginate, endless pages
  12. ubuntu 下配置Web服务器
  13. Oracle Global Finanicals Technical Reference(一)
  14. ES--08
  15. Ansa 自动加载用户脚本设置
  16. [USACO18JAN]Cow at Large P
  17. Caused by: java.net.BindException: Address already in use: bind
  18. 第30章:MongoDB-索引--地理信息索引
  19. C++中的构造函数,拷贝构造函数,赋值函数
  20. 用zd1211+Ubuntu 10.04实现的AP

热门文章

  1. Web jquery表格组件 JQGrid 的使用 - 6.准备工作 & Hello JQGrid
  2. Solr学习总结(一)Solr介绍
  3. 深入理解IoC/DI
  4. Android网络请求通信之Volley
  5. HTTP请求报文格式
  6. pathinfo()、dirname()、basename()获得文件的路径,名称等信息说明
  7. Android Activity的加载的模式
  8. cain使用教程
  9. HTML头部
  10. mysql 优化实例之索引创建