我正在尝试将数据帧转换为spark Scala中的hive表。我已从XML文件中读取数据框。它使用SQL上下文来执行此操作。我想将此数据帧保存为hive表。我收到了这个错误:
“WARN HiveContext $$ anon $ 1:无法以Hive兼容的方式持久存储
database_1
。test_table
。以Spark SQL特定格式将其持久化为Hive Metastore。”
object spark_conversion {
def main(args: Array[String]): Unit = {
if (args.length < 2) {
System.err.println("Usage: <input file> <output dir>")
System.exit(1)
}
val in_path = args(0)
val out_path_csv = args(1)
val conf = new SparkConf()
.setMaster("local[2]")
.setAppName("conversion")
val sc = new SparkContext(conf)
val hiveContext = new HiveContext(sc)
val df = hiveContext.read
.format("com.databricks.spark.xml")
.option("rowTag", "PolicyPeriod")
.option("attributePrefix", "attr_")
.load(in_path)
df.write
.format("com.databricks.spark.csv")
.option("header", "true")
.save(out_path_csv)
df.saveAsTable("database_1.test_table")
df.printSchema()
df.show()
答案 0 :(得分:4)
spark中的saveAsTable与hive不兼容。我在CDH 5.5.2。来自cloudera网站的解决方法:
SELECT a.id, a.amount, a.date FROM account a WHERE a.date IN (SELECT MAX(date) FROM account)
http://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_rn_spark_ki.html