在Python中使用JDBC从Spark连接到远程Hive时找不到远程数据库?

时间:2019-12-14 00:25:39

标签: apache-spark jdbc hive pyspark pyspark-sql

我正在使用pyspark脚本通过JDBC驱动程序从远程Hive读取数据。我尝试了使用enableHiveSupport,Hive-site.xml的其他方法。但是由于某些限制,这种技术对我来说是不可能的(访问被禁止从群集外启动纱线作业)。下面是我连接到Hive的唯一方法。

from pyspark.sql import SparkSession

spark=SparkSession.builder \
        .appName("hive") \
        .config("spark.sql.hive.metastorePartitionPruning", "true") \
        .config("hadoop.security.authentication" , "kerberos") \
        .getOrCreate()

jdbcdf=spark.read.format("jdbc").option("url","urlname")\
        .option("driver","com.cloudera.hive.jdbc41.HS2Driver").option("user","username").option("dbtable","dbname.tablename").load()
spark.sql("show tables from dbname").show()

给我下面的错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o31.sql.
: org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database 'vqaa' not found;

有人可以帮助我如何使用这种方法访问远程数据库/表吗?谢谢

1 个答案:

答案 0 :(得分:0)

在您的sparksession中添加.enableHiveSupport()以便访问配置单元目录