hadoop HDP 2.6.5:我使用pyspark在python中创建了一个数据库,但该数据库未显示在hive view 2.0中

mefy6pfw  于 2022-12-17  发布在  Hadoop
关注(0)|答案(1)|浏览(258)

我用pyspark创建的数据库有问题:

  1. from pyspark import SparkContext,SparkConf
  2. from pyspark.sql import SQLContext, SparkSession, HiveContext
  3. conf = SparkConf().set("spark.jars.packages","org.mongodb.spark:mongo-spark-connector_2.11:2.3.2")
  4. spark = SparkSession.builder \
  5. .appName("test") \
  6. .getOrCreate()
  7. df = spark.read.option("multiline", "true").json("hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/output2.json")
  8. #Database on Hive
  9. spark.sql("create database testdb")
  10. print('Voici le Dataframe : ', df)
  11. df.write.mode("overwrite").saveAsTable("testdb.test3")
  12. spark.sql("SHOW DATABASES").show()
  13. df = spark.sql("SELECT * FROM testdb.test3")
  14. df.show()

这段代码没有任何错误,但是当我进入ambari界面时,我看不到我的数据库:只有“default”和“foodmart”。当在shell中使用:

  1. spark.sql("SHOW DATABASES").show()
  2. df = spark.sql("SELECT * FROM testdb.test3")

我可以看到我的数据库及其内容如下:

  1. +---------+
  2. |namespace| +---------+ | default| | testdb| +---------+

我该怎么做才能在hive上看到我的数据库并在zeppelin上使用它。
我尝试使用maria_dev和root。我尝试重新启动hive。

4c8rllxm

4c8rllxm1#

因此,在创建SparkSession时没有设置.enableHiveSupport()。当前,数据库存储在默认的data_warehouse位置。无论何时启动shell,它都会从该data_warehouse(您保存的表)读取数据。因此,要将数据保存到hive中,您可以执行以下操作:

  1. from pyspark import SparkContext,SparkConf
  2. from pyspark.sql import SQLContext, SparkSession, HiveContext
  3. conf = SparkConf().set("spark.jars.packages","org.mongodb.spark:mongo-spark-connector_2.11:2.3.2")
  4. spark = SparkSession.builder \
  5. .appName("test") \
  6. .enableHiveSupport() \ # This will use the hive to store the data while using spark sql.
  7. .getOrCreate()
  8. df = spark.read.option("multiline", "true").json("hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/output2.json")
  9. #Database on Hive
  10. spark.sql("create database testdb")
  11. print('Voici le Dataframe : ', df)
  12. df.write.mode("overwrite").saveAsTable("testdb.test3")
  13. spark.sql("SHOW DATABASES").show()
  14. df = spark.sql("SELECT * FROM testdb.test3")
  15. df.show()
展开查看全部

相关问题