【问题标题】:Pyspark - Looking to apply SQL queries to pyspark dataframesPyspark - 希望将 SQL 查询应用于 pyspark 数据帧
【发布时间】:2020-09-08 16:16:18
【问题描述】:

免责声明:我对 pyspark 很陌生,这个问题可能不合适。

我在网上看过如下代码:

# Get the id, age where age = 22 in SQL
spark.sql("select id, age from swimmers where age = 22").show()

现在,我尝试使用带有以下代码的 pyspark 进行旋转:

complete_dataset.createOrReplaceTempView("df")
temp = spark.sql("SELECT core_id from df")

这是我得到的错误:

'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'

我认为这很简单,但我似乎找不到解决方案。在 pyspark 中可以这样做吗?

注意:我在使用 Pyspark 笔记本的 EMR 集群上。

【问题讨论】:

  • 如何创建 sparkSession 和 spark 版本?不确定是否相关,但仍想知道
  • 您是否启用了 Hive 支持?在创建 sparksession 时检查 enableHiveSupport() 是否存在
  • @SomeshwarKale:我在 EMR 集群上。我正在使用 Pyspark 笔记本。我没有明确创建 sparkSession。
  • 从 sparkSession 检查 spark.sql.catalogImplementation 属性的值
  • @SomeshwarKale 我收到以下错误:AttributeError: 'function' object has no attribute 'catalogImplementation'。我对 spark/pyspark 很陌生,所以我可能会遗漏一些东西。任何帮助将不胜感激。

标签: pyspark amazon-emr


【解决方案1】:

在 pyspark 中,您可以读取 MySQL 表(假设您使用的是 MySQL)并创建数据框。

    jdbc_url = 'jdbc:mysql://{}:{}@{}/{}?zeroDateTimeBehavior=CONVERT_TO_NULL'.format(
    'usrname',
    'password',
    'host',
    'db',
)

    table_df = sql_ctx.read.jdbc(url=jdbc_url, table='table_name').select("column_name1", "column_name2")
   

table_df 是数据框。您可以对数据框进行必要的操作,如过滤器等。

table_df.filter(table_df.column1 == 'abc').show()

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 2020-10-11
    • 2021-12-27
    • 2022-01-18
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多