pyspark - 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 集群上。
解决方案
在 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()
推荐阅读
- spring-boot - 我应该如何为实体设计状态字段
- npm-install - 编译失败错误
- c# - 每 X 秒读取一次串口
- python - 代码中的错误(只有整数标量数组可以转换为标量索引)
- reactjs - 当 HTML 元素存在时 toContainHTML 提供错误(反应测试)
- python - 实例之间的 PyQt Signal Slots 连接
- node.js - express js:端口正在运行但无法终止端口
- c++ - 介子在调试模式下编译子项目
- javascript - 我不明白为什么我的消息没有发送给每个决定收到通知的用户。它只发送给一个
- visual-studio-code - 连接 FTP 帐户时出现 FTP 关闭消息