首页 > 解决方案 > 将列表转换为 pyspark 数据框

问题描述

我有一个从 mysql db 获取的元组列表。我需要将其转换为 pyspark 数据框。

我的代码如下所示:

os.environ['PYSPARK_SUBMIT_ARGS'] = "--packages mysql:mysql-connector-java:5.1.39 pyspark-shell"

    spark = SparkSession.builder.appName('recommendation_clustering').getOrCreate()
    sqlContext = SQLContext(spark)
    final_result = sqlContext.read.format("jdbc").options(
        url="jdbc:mysql://localhost:3306/mysqldb",
        driver="com.mysql.jdbc.Driver",
        dbtable="(select movie_id, genres from  program) as rating",
        user="user",
        password="password",
        properties={"driver": 'com.mysql.jdbc.Driver'}
    ).load().take(3)

final_result 的类型是列表,如下所示:

[行(movie_id='0-0-10',流派='[喜剧]'),行(movie_id='0-0-1113',流派='[音乐]'),行(movie_id='0- 0-1132',流派='[音乐]')])

我需要将其转换为 pyspark 数据框。

我试过
sqlDataFrame = sqlContext.createDataFrame(final_result,["movie_id","genres"])但收到错误消息。

标签: python-3.xpyspark

解决方案


您在评论中提到的错误,AttributeError: 'SparkSession' object has no attribute 'parallelize'可能是因为您正在尝试创建SQLContextusing SparkSessionSparkSession是使用 Spark 操作数据的统一入口点,您无需SQLContext单独创建。直接使用spark变量读取数据。

阅读此答案以获取更多详细信息。

此外,final_result如果您只是使用spark而不是sqlContext.


推荐阅读