我正在查询一个配置单元表以找出唯一列的最后一个值,比如 id
。我正在做下面的事情
frame=sqlContext.sql("select max(id) from database.table")
当我执行 frame.show()
+------+
| _c0|
+------+
|276308|
+------+
现在我想把它作为一个 lastval
为此我正在做
frame1=frame.map(lambda row: [str(c) for c in row]).collect()
lastval =''.join(frame1[0][0])
print lastval
276308
我得到了预期的结果,但我想知道是否有更好的方法?
最佳答案
IIUYC.
让我们准备一些数据:
pdf = pd.DataFrame({"id":[1,2,3]})
df = sqlContext.createDataFrame(pdf)
df.registerTempTable("tbl")
sqlContext.sql("select * from tbl").show()
+---+
| id|
+---+
| 1|
| 2|
| 3|
+---+
选择“原样”:
sqlContext.sql("select max(id) from tbl").show()
+-------+
|max(id)|
+-------+
| 3|
+-------+
从 Hive 表中选择“漂亮”:
sqlContext.sql("select max(id) as lastVal from tbl").show()
+-------+
|lastVal|
+-------+
| 3|
+-------+
从 Spark df
中选择“pretty”:
from pyspark.sql import functions as F
df.select(F.max("id").alias("lastVal")).show()
+-------+
|lastVal|
+-------+
| 3|
+-------+
如果您希望将数据传递给纯 Python 以供进一步使用或分析,您可以按以下步骤进行:
lv = sqlContext.sql("select max(id) as lastVal from tbl").collect()
print(lv[0]["lastVal"])
3
lv = df.select(F.max("id").alias("lastVal")).collect()
print(lv[0]["lastVal"])
3
关于python - 使用 pyspark 找出配置单元表的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024235/