apache-spark - 尝试在 spark 中读取 athena 表时出错
问题描述
我在 pyspark 中有以下代码片段:
import pandas as pd
from pyspark import SparkContext, SparkConf
from pyspark.context import SparkContext
from pyspark.sql import Row, SQLContext, SparkSession
import pyspark.sql.dataframe
def validate_data():
conf = SparkConf().setAppName("app")
spark = SparkContext(conf=conf)
config = {
"val_path" : "s3://forecasting/data/validation.csv"
}
data1_df = spark.read.table("db1.data_dest”)
data2_df = spark.read.table("db2.data_source”)
print(data1_df.count())
print(data2_df.count())
if __name__ == "__main__":
validate_data()
现在此代码在 sagemaker 上的 jupyter notebook 上运行时可以正常工作(连接到 EMR)
但是当我们在终端上作为 python 脚本运行时,它会抛出这个错误
错误信息
AttributeError: 'SparkContext' object has no attribute 'read'
我们必须自动化这些笔记本,所以我们正在尝试将它们转换为 python 脚本
解决方案
您只能read
在 Spark Session 上调用,而不能在 Spark Context 上调用。
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
conf = SparkConf().setAppName("app")
spark = SparkSession.builder.config(conf=conf)
或者您可以将 Spark 上下文转换为 Spark 会话
conf = SparkConf().setAppName("app")
sc = SparkContext(conf=conf)
spark = SparkSession(sc)
推荐阅读
- reactjs - 尽管安装了文件保护程序,但反应找不到文件保护程序
- python - 网络抓取返回“无”
- php - 使用 PHP 从 HTML 页面执行 shell 脚本
- bash - 条件语句中的变量分配和返回码的同时检查
- sql-server - SQL Server 常规透视
- javascript - Javascript:console.logs 在函数执行时将函数写入 html div
- java - 如何使用JAVA在ODT模板中动态生成二维码?
- android - Flutter 和 Native 之间的 Firebase 云消息传递令牌处理
- nginx - 如何在 nginx 中使用数据库或本地文件进行临时重定向
- reactjs - 如何在 React 中将 div 元素导出为 excel?