/ / Spark enviar gera erro ao usar as tabelas do Hive - apache-spark, hive, spark-dataframe

O envio do Spark gera um erro ao usar as tabelas do Hive - apache-spark, hive, spark-dataframe

Eu tenho um erro estranho, eu estou tentando gravar dados para a colmeia, ele funciona bem em spark-shell, mas enquanto eu estou usando spark-submit, jogando banco de dados / tabela não encontrada no erro padrão.

A seguir está a codificação que eu estou tentando escrever em spark-submit, estou usando custom build de spark 2.0.0

 val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext.table("spark_schema.iris_ori")

A seguir está o comando que estou usando,

/home/ec2-user/Spark_Source_Code/spark/bin/spark-submit --class TreeClassifiersModels --master local[*] /home/ec2-user/Spark_Snapshots/Spark_2.6/TreeClassifiersModels/target/scala-2.11/treeclassifiersmodels_2.11-1.0.3.jar /user/ec2-user/Input_Files/defPath/iris_spark SPECIES~LBL+PETAL_LENGTH+PETAL_WIDTH RAN_FOREST 0.7 123 12

A seguir está o erro

16/05/20 09:05:18 INFO SparkSqlParser: Comando de análise: spark_schema.measures_20160520090502 Exceção no thread "main" org.apache.spark.sql.AnalysisException: O banco de dados "spark_schema" não existe; em org.apache.spark.sql.catalyst.catalog.ExternalCatalog.requireDbExists (ExternalCatalog.scala: 37) em org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.tableExists (InMemoryCatalog.scala: 195) em org.apache.spark.sql.catalyst.catalog.SessionCatalog.tableExists (SessionCatalog.scala: 360) em org.apache.spark.sql.DataFrameWriter.saveAsTable (DataFrameWriter.scala: 464) em org.apache.spark.sql.DataFrameWriter.saveAsTable (DataFrameWriter.scala: 458) na TreeClassifiersModels $ .main (TreeClassifiersModels.scala: 71) em TreeClassifiersModels.main (TreeClassifiersModels.scala) em sun.reflect.NativeMethodAccessorImpl.invoke0 (método nativo) em sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) em sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) em java.lang.reflect.Method.invoke (Method.java:497) em org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain (SparkSubmit.scala: 726) em org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 183) em org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.scala: 208) em org.apache.spark.deploy.SparkSubmit $ .main (SparkSubmit.scala: 122) em org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)

Respostas:

2 para resposta № 1

O problema foi causado pela depreciação ocorrida no Spark Versão 2.0.0. O Contexto Hive foi descontinuado no Spark 2.0.0. Para ler / gravar tabelas do Hive no Spark 2.0.0, precisamos usar a sessão Spark da seguinte maneira.

val sparkSession = SparkSession.withHiveSupport(sc)