Java Spark SQL-将数据从另一个配置单元表插入配置单元表错误

Java Spark SQL-将数据从另一个配置单元表插入配置单元表错误,java,hadoop,apache-spark,cloudera-cdh,Java,Hadoop,Apache Spark,Cloudera Cdh,我想使用Spark SQL将数据从另一个配置单元表插入到配置单元表中。我正在犯错误 我的代码: SparkConf conf = new SparkConf().setAppName("GetHiveTableData"); JavaSparkContext sc = new JavaSparkContext(conf); JavaHiveContext hiveCtx = new JavaHiveContext(sc); JavaSchemaRDD rdd = hiveCtx.sql("IN

我想使用Spark SQL将数据从另一个配置单元表插入到配置单元表中。我正在犯错误

我的代码:

SparkConf conf = new SparkConf().setAppName("GetHiveTableData");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaHiveContext hiveCtx = new JavaHiveContext(sc);

JavaSchemaRDD rdd = hiveCtx.sql("INSERT INTO TABLE table1 ( aggregation_date, subnetwork,last_5_max) select to_date(now()), subnetwork, max(last_5_minute_cpu_utilization_kpi)  from table2 where to_date(dataset_date)= to_date(now()) GROUP BY subnetwork");
错误消息:

        Caused by: org.apache.hadoop.hive.ql.parse.ParseException: line 1:83 cannot recognize input near '(' 'aggregation_date' ',' in select clause
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:161)

您没有使用有效的配置单元语法。你需要做什么

insert into table table1 select ..
蜂巢用途:

  • CTAS(按选择创建表)

  • 在路径中加载数据(本地)


用于创建数据。

配置单元中不支持在中命名插入。用这个。它假设表表1有一列三列,顺序为聚合日期、子网络、最后5列最大值

INSERT INTO TABLE table1 select to_date(now()), subnetwork, max(last_5_minute_cpu_utilization_kpi)  from table2 where to_date(dataset_date)= to_date(now()) GROUP BY subnetwork;

我尝试使用query:insert-into-tab3选择tab2中的id2、col_12、col_22、col_32,0它在配置单元shell中工作,但在spark JavaSchemaRDD rdd=hiveCtx.sql中不工作(“insert-into-tab3选择tab2中的id2、col_12、col_22、col_32,0”);获取错误消息:线程“main”java.lang.RuntimeException中出现异常:查询中不支持的语言功能:插入表tab3中,从tab2中选择id2、COLU 12、COLU 22、COLU 32,0同一查询(插入表tab3中,从tab2中选择id2、COLU 12、COLU 22、COLU 32,0),在配置单元命令行中工作正常。那么sparkSQL使用的正确语法是什么呢?哦,我的错:你的语法很好。不知怎的,我看错了。实际上,现在让我看看spark语法分析器。您能在不使用0文本的情况下尝试您的查询吗?或者可能用另一列替换0文字(仅用于测试),可能这会使它出错。感谢您的重播…我尝试了查询:在表tab3中插入从tab2中选择id2、COLU 1、COLU 2、COLU 3,但没有运气。请让我知道是否需要进行任何配置(聚合日期、子网络、最后5个最大值)您的分区?