cloudantdata.createOrReplaceTempView("washingflat")
sqlDF = spark.sql("SELECT temperature FROM washingflat")
sqlDF.rdd.map(lambda row : row.temperature).collect()
我只是对普通的(展开的)整数值感兴趣.到目前为止,我使用dataframe API进行的所有尝试始终返回包装了我感兴趣的值的行对象.
有没有一种方法可以在不使用RDD API的情况下获取标量内容?
import numpy as np
import pandas as pd
test_df = pd.DataFrame({'Age': np.random.uniform(0,100, size = (100,)), 'City': 'LA'})
sqlContext.createDataFrame(test_df).registerTempTable('AgeTable')
有两种(主要)方法可以在不使用行抽象的情况下提取值.第一种是使用DataFrame / SQL查询的.toPandas()方法
print(sqlContext.sql("SELECT Age FROM AgeTable").toPandas()['Age'])
这将返回一个Pandas DataFrame /系列.
第二个是将数据实际分组到SQL内部,然后从单个Row对象中提取数据
al_qry = sqlContext.sql("SELECT City, COLLECT_SET(Age) as AgeList FROM AgeTable GROUP BY City")
al_qry.first()[0].AgeList
这将返回原始的python列表.
toPandas方法是更有效的方法,将来可能会对此方法进行进一步的改进.