我正在查询配置单元表,以找出唯一列sayid的最后一个值。我在下面这样做

frame=sqlContext.sql("select max(id) from database.table")

当我frame.show()
+------+
|   _c0|
+------+
|276308|
+------+

现在我想把这个作为我正在做的
frame1=frame.map(lambda row: [str(c) for c in row]).collect()

lastval =''.join(frame1[0][0])

print lastval

276308

我得到了预期的结果,但我想知道有没有更好的方法来做这件事?

最佳答案

伊尤克。
让我们准备一些数据:

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|
+-------+

从配置单元表中选择“漂亮”:
sqlContext.sql("select max(id) as lastVal from tbl").show()
+-------+
|lastVal|
+-------+
|      3|
+-------+

从Spark中选择“漂亮”:
from pyspark.sql import functions as F
df.select(F.max("id").alias("lastVal")).show()
+-------+
|lastVal|
+-------+
|      3|
+-------+

如果您希望将您的数据传递给pure 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/

10-09 05:44