Невозможно создать таблицу с искровым SQL: поддержка Hive требуется для CREATE Hive TABLE (AS SELECT); - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь создать таблицу в spark (scala), а затем вставить значения из двух существующих фреймов данных, но я получил это исключение:

Exception in thread "main" org.apache.spark.sql.AnalysisException: Hive support is required to CREATE Hive TABLE (AS SELECT);;
'CreateTable `stat_type_predicate_percentage`, ErrorIfExists 

Вот код:

case class stat_type_predicate_percentage (type1: Option[String], predicate: Option[String], outin: Option[INT], percentage: Option[FLOAT])
object LoadFiles1 {

 def main(args: Array[String]) {
    val sc = new SparkContext("local[*]", "LoadFiles1") 
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    val warehouseLocation = new File("spark-warehouse").getAbsolutePath
    val spark = SparkSession
        .builder()
        .appName("Spark Hive Example")
        .config("spark.sql.warehouse.dir", warehouseLocation)
        .enableHiveSupport()
        .getOrCreate()       

import sqlContext.implicits._    
import org.apache.spark.sql._       
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType,StructField,StringType};

//statistics 
val create = spark.sql("CREATE TABLE stat_type_predicate_percentage (type1 String, predicate String, outin INT, percentage FLOAT) USING hive")
val insert1 = spark.sql("INSERT INTO stat_type_predicate_percentage SELECT types.type, res.predicate, 0, 1.0*COUNT(subject)/(SELECT COUNT(subject) FROM MappingBasedProperties AS resinner WHERE res.predicate = resinner.predicate) FROM MappingBasedProperties AS res, MappingBasedTypes AS types WHERE res.subject = types.resource GROUP BY res.predicate,types.type")

val select = spark.sql("SELECT * from stat_type_predicate_percentage" ) 
  }

Как мне это решить?

1 Ответ

0 голосов
/ 03 марта 2019

Эта проблема может быть двоякой, если вы захотите сделать то, что @Tanjin предложил в комментариях, и это может сработать впоследствии (попробуйте добавить .config("spark.sql.catalogImplementation","hive") к вашему SparkSession.builder), но если вы действительно хотите использовать существующий улейэкземпляр с собственными метаданными, которые вы сможете запрашивать за пределами вашей работы.Или вы, возможно, уже захотите использовать существующие таблицы, которые вы можете добавить в свою конфигурацию hive-site.xml.

Этот файл конфигурации содержит некоторые свойства, которые вам, вероятно, понадобятся, например hive.metastore.uris, которые позволят вамВ контексте добавить новую таблицу, которая будет сохранена в магазине.И он сможет читать из таблиц в вашем экземпляре улья благодаря metastore, который содержит таблицы и местоположения.

...