Xin lỗi vì viết bài muộn nhưng tôi không thấy câu trả lời nào được chấp nhận.
df.write().saveAsTable
sẽ ném AnalysisException
và không tương thích với bảng HIVE.
Lưu trữ DF như df.write().format("hive")
nên làm thủ thuật!
Tuy nhiên, nếu điều đó không hiệu quả, thì hãy xem xét các nhận xét và câu trả lời trước đó, đây là giải pháp tốt nhất theo ý kiến của tôi (Mặc dù vậy, hãy mở cho các đề xuất).
Cách tốt nhất là tạo bảng HIVE một cách rõ ràng (bao gồm cả bảng PARTITIONED),
def createHiveTable: Unit ={
spark.sql("CREATE TABLE $hive_table_name($fields) " +
"PARTITIONED BY ($partition_column String) STORED AS $StorageType")
}
lưu DF dưới dạng bảng tạm thời,
df.createOrReplaceTempView("$tempTableName")
và chèn vào bảng HIVE PARTITIONED:
spark.sql("insert into table default.$hive_table_name PARTITION($partition_column) select * from $tempTableName")
spark.sql("select * from default.$hive_table_name").show(1000,false)
Nói cách khác CỘT CUỐI CÙNG trong DF sẽ là CỘT ĐỐI TÁC vì vậy hãy tạo bảng HIVE cho phù hợp!
Hãy bình luận nếu nó hoạt động! hay không.
- NGÀY--
df.write()
.partitionBy("$partition_column")
.format("hive")
.mode(SaveMode.append)
.saveAsTable($new_table_name_to_be_created_in_hive)