问题描述
我正在使用 Spark 创建并写入 Hive 托管表(Spark 作业正在完成且没有错误)。但是,从 Hive beeline 控制台查询同一张表会抛出
java.io.IOException: java.lang.IllegalArgumentException: bucketId out 范围:-1 (state=,code=0)`
我还打印了 DataSet<Row>
的值,这是正确的。
下面是火花代码:
SparkSession spark = SparkSession.builder().appName("Spark_Hive").enableHiveSupport().getorCreate();
HiveContext hiveContext = new HiveContext(sparkContext);
hiveContext.setConf("hive.exec.dynamic.partition","true");
hiveContext.setConf("hive.exec.dynamic.partition.mode","nonstrict");
spark.sql("CREATE TABLE IF NOT EXISTS table1" + " (num1 INT,num2 INT) STORED AS ORC");
String sql = "with tab1 as(select inline(array(" + "struct(1),struct(2),struct(3),struct(4),struct(5),struct(6)"
+ ")) as num1),tab2 as (select inline(array(" + "struct(1),struct(6)"
+ ")) as num2) select * from tab1 t1 join tab2 t2 on t1.num1=t2.num2";
Dataset<Row> df = hiveContext.sql(sql);
JavaRDD<Row> res = df.toJavaRDD();
StructType schema = new StructType().add("num1","int").add("num2","int");
Dataset<Row> result = hiveContext.createDataFrame(res,schema);
result.write().format("ORC").mode(SaveMode.Append).insertInto("table_" + tableSuffix);
result.unpersist();
从蜂巢直线运行选择查询时,我得到:
0: jdbc:hive2://host> select * from table1;
INFO : Compiling command(queryId=hive_20210120020726_8814e02b-d413-4ec8-a9ea-9009734b5618): select * from table1
INFO : Semantic Analysis Completed (retrial = false)
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:table1.num1,type:int,comment:null),FieldSchema(name:table1.num2,comment:null)],properties:null)
INFO : Completed compiling command(queryId=hive_20210120020726_8814e02b-d413-4ec8-a9ea-9009734b5618); Time taken: 0.11 seconds
INFO : Executing command(queryId=hive_20210120020726_8814e02b-d413-4ec8-a9ea-9009734b5618): select * from table_1
INFO : Completed executing command(queryId=hive_20210120020726_8814e02b-d413-4ec8-a9ea-9009734b5618); Time taken: 0.003 seconds
INFO : OK Error: java.io.IOException: java.lang.IllegalArgumentException: bucketId out of range: -1 (state=,code=0)
请帮助解决此问题。
编辑: 尝试了以下帖子中提到的解决方案,没有奏效。
spark throws error when reading hive table
Table loaded through Spark not accessible in Hive
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)