我有Hive表(STORED AS ORC)和JSON数据。
我将JSON写入我的ORC表,如下所示:
JavaRDD<String> jsonData = rdd.map(t -> t.value());//Get the json from RDD
Dataset<String> jsonSet = sparkSession.createDataset(JavaRDD.toRDD(jsonData), org.apache.spark.sql.encoders.STRING());
Dataset<Row> df = sparkSession.read.json(jsonSet);
Dataset<Row> dfSelect = df.select(cols);//cols - Column[] that contains the columns that I need from Json
dfSelect.write().format("orc").mode("append").save(path);
这段代码可以正常工作并将数据插入到我的表中,但是我的问题是数据没有插入正确的列中,如果我的ORC表看起来像
colA colB colC colD colE
------------------------------------------------
valubB valueD valueE
然后从json到ColB,ColD,ColE列中进行选择,并将insert数据插入到前3列中,
我该如何解决?我需要从Json数据集中获取模式吗?
谢谢。