【发布时间】:2018-03-14 19:00:01
【问题描述】:
我有一个 ORC 文件,我可以使用 Pyspark 2.2.0 将其读入 DataFrame
from pyspark.context import SparkContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
df = spark.read.orc("s3://leadid-sandbox/krish/lead_test/")
上面的 df 有一个如下的模式
root
|-- item: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
样本数据看起来像这样(只是一个样本数据而不是整个数据集)
item
{http_Accept-Language={"s":"en-US"}, Win64={"n":"1"},
geoip_region={"s":"FL"}, Platform={"s":"Win7"}, geoip_postal_code=
{"s":"33432"}, JavaApplets={"n":"1"}, http_Accept={"s":"*/*"},
Version={"s":"11.0"}, Cookies={"n":"1"}, Platform_Version=
{"s":"6.1"}, http_Content-Type={"s":"application/x-www-form-
urlencoded"}}
{http_Accept-Language={"s":"en-US"}, Win64={"n":"1"}, IFrames=
{"n":"1"}, geoip_region={"s":"CA"}, Platform={"s":"Win7"}, Parent=
{"s":"IE 11.0"}, http_Dnt={"n":"1"}}
所以我像下面这样分解了“项目”
expDf = df.select(explode("item"))
上面的 DataFrame 有下面的架构,当我做一个 show(2) 有下面的细节
root
|-- key: string (nullable = false)
|-- value: string (nullable = true)
+------------+----------+
| key| value|
+------------+----------+
|geoip_region|
{
"s": "FL"
}
|
| Tables|
{
"n": "1"
}
|
+------------+----------+
如何从这个 DataFrame 中选择数据?我尝试了不同的方法,但没有用。 所以我需要值为'FL'的'geoip_region'等等。 任何帮助表示赞赏。
【问题讨论】:
标签: python apache-spark pyspark orc