尝试在 spark 中读取 athena 表时出错
Posted
技术标签:
【中文标题】尝试在 spark 中读取 athena 表时出错【英文标题】:getting error while trying to read athena table in spark 【发布时间】:2021-01-04 10:52:06 【问题描述】:我在pyspark中有如下代码sn-p:
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 脚本
【问题讨论】:
【参考方案1】:您只能在 Spark 会话中调用 read
,而不能在 Spark 上下文中调用。
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)
【讨论】:
以上是关于尝试在 spark 中读取 athena 表时出错的主要内容,如果未能解决你的问题,请参考以下文章
当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。
从 Amazon S3 创建表时,Athena 如何将数据与正确的字段匹配?