将路径文件设置为参数在 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 个步骤中完成:
- 正在将数据读入数据帧
- 将数据帧写入文件
所以代码需要是这样的:
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。
我想要 运行 一个代码,它可以使用 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 个步骤中完成:
- 正在将数据读入数据帧
- 将数据帧写入文件
所以代码需要是这样的:
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。