2017-08-13 62 views
1

我想用分區創建配置單元表。使用API​​而不是SQL從Spark創建Hive表?

該表的模式是:

val query = "CREATE TABLE some_new_table (name string, age integer) USING org.apache.spark.sql.parquet OPTIONS (path '<some_path>') PARTITIONED BY (age)" 

spark.sql(query) 

當我試着使用星火API(使用斯卡拉),該表做:

val schema = StructType(StructField(name,StringType,true),StructField(age,IntegerType,true)) 

我可以用星火-SQL使用做到這一點充滿了數據。我只想創建一個空表並定義分區。這就是我在做什麼,我做錯了什麼:

val df = spark.createDataFrame(sc.emptyRDD[Row], schema) 

val options = Map("path" -> "<some_path>", "partitionBy" -> "age") 

df.sqlContext().createExternalTable("some_new_table", "org.apache.spark.sql.parquet", schema, options); 

我正在使用Spark-2.1.1。

回答

1

如果您跳過分區。可以saveAsTable嘗試:

spark.createDataFrame(sc.emptyRDD[Row], schema) 
    .write 
    .format("parquet") 
    //.partitionBy("age") 
    .saveAsTable("some_new_table") 

星火分區和分區蜂房不兼容,所以,如果你想從蜂巢訪問,您可以使用SQL:https://issues.apache.org/jira/browse/SPARK-14927

相關問題