将路径文件设置为参数在 python pyspark 中不起作用

Set path file as parameter didnt worked in python pyspark

我想要 运行 一个代码,它可以使用 jdbc 驱动程序获取数据并将其保存到文件路径中。它成功地摄取了数据,但保存功能没有用。我知道我们可以使用这样的代码来保存数据:

a.write.mode("overwrite").parquet("test/partition_test.parquet")

有什么方法可以将文件路径设置为参数吗?我试过如下设置参数,但没有用。

我的代码:

def ingest(spark, db_url, tablename, username, password,destination, driver, save_format="parquet"):
    a = spark.read.format("jdbc").option("url",db_url).option("dbtable",tablename).option("user", username).option("password",password).option("path", destination).option("driver",driver).load()   
    return a


ingest(spark, "jdbc:mysql://192.168.122.1:3306/users", "users", "root", "123456@h21","/path", "com.mysql.jdbc.Driver", save_format="parquet")

您在代码中将两件事混合在一起。您需要做的是在 2 个步骤中完成:

  1. 正在将数据读入数据帧
  2. 将数据帧写入文件

所以代码需要是这样的:

def ingest(spark, db_url, tablename, username, password, destination, 
    driver, save_format="parquet"):
    a = spark.read.format("jdbc").option("url",db_url)\
       .option("dbtable",tablename).option("user", username)\
       .option("password",password).option("driver",driver).load()
    a.write.format(save_format).save(destination)
    return a

此函数将 return dataframe,但如果您只需要读写数据,则可以 return None 而不是 dataframe。