gpt4 book ai didi

python - 获取数据框列及其值作为 pyspark 中的变量

转载 作者:行者123 更新时间:2023-12-01 02:22:28 26 4
gpt4 key购买 nike

我正在使用 pysparkmysql 表中获取数据,如下所示。

df = sqlContext.read.format("jdbc").option("url", "{}:{}/{}".format(domain,port,mysqldb)).option("driver", "com.mysql.jdbc.Driver").option("dbtable", "(select ifnull(max(id),0) as maxval, ifnull(min(id),0) as minval, ifnull(min(test_time),'1900-01-01 00:00:00') as mintime, ifnull(max(test_time),'1900-01-01 00:00:00') as maxtime FROM `{}`) as `{}`".format(table, table)).option("user", "{}".format(mysql_user)).option("password", "{}".format(password)).load()

df.show()的结果如下

+------+------+-------------------+-------------------+
|maxval|minval| mintime| maxtime|
+------+------+-------------------+-------------------+
| 1721| 1|2017-03-09 22:15:49|2017-12-14 05:17:04|
+------+------+-------------------+-------------------+

现在我想分别获取列及其值。

我想要得到

max_valval = 1721
min_valval = 1
min_timetime = 2017-03-09 22:15:49
max_timetime = 2017-12-14 05:17:04

我已经做了如下。

 max_val = df.select('maxval').collect()[0].asDict()['maxval']
min_val = df.select('minval').collect()[0].asDict()['minval']
max_time = df.select('maxtime').collect()[0].asDict()['maxtime']
min_time = df.select('mintime').collect()[0].asDict()['mintime']

pyspark 中是否有更好的方法来执行此操作。

最佳答案

目前您已使用 collect 4 次,这是具有成本效益的。你可以尝试一些Python技能来做到这一点。我有一种方法你可以尝试:-

df = (sqlContext.read.format("jdbc")
.option("url", "{}:{}/{}".format(domain,port,mysqldb))
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", """(
select ifnull(max(id),0) as maxval, ifnull(min(id),0) as minval,
ifnull(min(test_time),'1900-01-01 00:00:00') as mintime,
ifnull(max(test_time), '1900-01-01 00:00:00') as maxtime
FROM `{}`) as `{}`""".format(table, table))
.option("user", "{}".format(mysql_user))
.option("password", "{}".format(password)).load())


for key, value in df.first().asDict().items():
globals()[key] = value

print minval
print maxval
print mintime
print maxtime

通过这种方式,您可以将列转换为变量。如果您需要进一步的帮助,请告诉我。

关于python - 获取数据框列及其值作为 pyspark 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com