python - 使用 pyspark 找出配置单元表的最后一个值

标签 python pandas apache-spark pyspark apache-spark-sql

我正在查询一个配置单元表以找出唯一列的最后一个值,比如 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/

相关文章:

apache-spark - 如何更新 ORC 流接收器中的现有条目?

python - 从 pyspark 中的数据框构建 StructType

python - 每个表单应该由不同的 python 函数(Flask)处理

python - 使用 pyqtplot 绘制从 .tiff 图像构建的 numpy 数组

python - 来自具有空列表值的字典的 Pandas Dataframe

pandas - 有没有办法使用带有阈值的 cumsum 来创建 bin?

pandas - 如何从 Spark 以 Feather 格式\存储保存文件?

python - 检测字符串中所有以大写字母开头的单词的代码

python - 如何将 SQL SELECT 中的数据插入到电子表格中

python - Pandas:将所有列从字符串转换为数字,除了两个?