【问题标题】:Write DataFrame to mysql table using pySpark使用 pySpark 将 DataFrame 写入 mysql 表
【发布时间】:2017-10-03 19:39:29
【问题描述】:

我正在尝试将记录插入到MySql 表中。该表包含idname 作为列。

我在pyspark shell 中执行如下操作。

name = 'tester_1'
id = '103'  
import pandas as pd
l = [id,name]

df = pd.DataFrame([l])

df.write.format('jdbc').options(
      url='jdbc:mysql://localhost/database_name',
      driver='com.mysql.jdbc.Driver',
      dbtable='DestinationTableName',
      user='your_user_name',
      password='your_password').mode('append').save()

我收到以下属性错误

AttributeError: 'DataFrame' object has no attribute 'write'

我做错了什么?从pySparkMySql表中插入记录的正确方法是什么

【问题讨论】:

    标签: python mysql apache-spark pyspark apache-spark-sql


    【解决方案1】:

    使用 Spark DataFrame 而不是 pandas',因为 .write 仅适用于 Spark DataFrame

    所以最终的代码可能是

    data =['103', 'tester_1']
    
    df = sc.parallelize(data).toDF(['id', 'name'])
    
    df.write.format('jdbc').options(
          url='jdbc:mysql://localhost/database_name',
          driver='com.mysql.jdbc.Driver',
          dbtable='DestinationTableName',
          user='your_user_name',
          password='your_password').mode('append').save()
    

    【讨论】:

    • 我收到以下错误java.lang.RuntimeException: org.apache.spark.sql.execution.datasources.jdbc.DefaultSource does not allow create table as select.。有没有其他替代方案。
    • 该表是否存在于数据源中并尝试使用mode 也。
    • 我在下面得到这个错误 java.lang.RuntimeException: org.apache.spark.sql.execution.datasources.jdbc.DefaultSource does not allow create table as select.. 还有其他替代方法吗这个。
    • @Karn_way: 表存在于目标中还是正在创建中?
    • 是的表确实存在。我正在使用带有 mysql 的 CDH 映像。我认为它已在 spark 2.0 中修复,在我的图像中它是 1.6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2020-05-20
    • 2019-09-22
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2022-11-06
    相关资源
    最近更新 更多