首页 > 解决方案 > Pyspark - 希望将 SQL 查询应用于 pyspark 数据帧

问题描述

免责声明:我对 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 集群上。

标签: pysparkamazon-emr

解决方案


在 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()

推荐阅读