在spark commit中使用Redshift JDBC Jar,不要让spark连接到Glue目录

时间:2018-10-29 20:57:57

标签: apache-spark pyspark amazon-redshift amazon-emr aws-glue

我能够从EMR上的spark作业分别连接到Redshift和Glue,但是当我想在spark作业中同时查询redshift表和胶目录时。当我在Spark Submit中使用EMR(/usr/share/aws/redshift/jdbc/RedshiftJDBC41.jar)给定的jdbc驱动程序时。我遇到这个错误-  pyspark.sql.utils.AnalysisException:u'java.lang.ExceptionInInitializerError:null;'

在HiveUtils之后:使用Spark类初始化HiveMetastoreConnection版本1.2.1。步骤。(应该在此步骤后与Glue交谈)

我的提交火花如下所示

spark-submit-打包com.databricks:spark-redshift_2.10:0.5.2 --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC41.jar,spark-redshift_2.10-2.0.0。 jar,minimal-json-0.9.4.jar t.py

示例代码

from pyspark.sql import SparkSession

spark = SparkSession.builder\
            .config("hive.metastore.client.factory.class", "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory")\
            .enableHiveSupport()\
            .getOrCreate();

query_k = """
          select * from table limit 10  """

s3TempDir = "s3://path"
jdbcURL = "jdbc:redshift:XXX!"

df = spark.read.format("com.databricks.spark.redshift")\
        .option("url", jdbcURL)\
        .option("tempdir", s3TempDir)\
        .option("query", query_k).load()
df.show()

0 个答案:

没有答案