选择地图键作为火花数据框中的列
Selecting map key as column in dataframe in spark
我有一个来自 cassandrasql 的数据框,我有一列是数据框中的地图
喜欢
scala> df.printSchema
root
|-- client: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
我需要select df 中的某些列以及地图中的特定键作为 df 中的列,而不是完整的地图
假设我有一张地图
键 1 -> 值 1
键 2 -> 值 2
....
我只需要 select 数据框中地图中的 key1 成为我的新数据框中的一列。我该怎么做
我也在使用 cassandrasqlcontext.sql 来获取数据帧。
使用 Spark SQL(假设您将数据框注册为 "df")
context.registerDataFrameAsTable(df,"df")
val newDf =context.sql("select client.key,client.value from df where client.key='some value'")
假设使用 Spark2 和 pyspark,这对我有用:
SparkSQL:
df.registerTempTable("table_name")
spark.sql("select client.key1 from table_name")
spark.sql("select client.key1, client.key2 from table_name")
使用数据帧 (df):
df.select("client.key1").show()
df.select("client.key1", "client.key2").show()
在 spark 中试试这个 sql:
select map_filter(your_map_name, (k,v) -> k == 'desired_key) from spark_table
这将为您提供整个 key:value 作为输出。如果您只想要值,请尝试以下操作:
select map_values(map_filter(your_map_name, (k,v) -> k == 'desired_key)) from spark_table
我有一个来自 cassandrasql 的数据框,我有一列是数据框中的地图 喜欢
scala> df.printSchema
root
|-- client: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
我需要select df 中的某些列以及地图中的特定键作为 df 中的列,而不是完整的地图
假设我有一张地图 键 1 -> 值 1 键 2 -> 值 2 ....
我只需要 select 数据框中地图中的 key1 成为我的新数据框中的一列。我该怎么做
我也在使用 cassandrasqlcontext.sql 来获取数据帧。
使用 Spark SQL(假设您将数据框注册为 "df")
context.registerDataFrameAsTable(df,"df")
val newDf =context.sql("select client.key,client.value from df where client.key='some value'")
假设使用 Spark2 和 pyspark,这对我有用:
SparkSQL:
df.registerTempTable("table_name")
spark.sql("select client.key1 from table_name")
spark.sql("select client.key1, client.key2 from table_name")
使用数据帧 (df):
df.select("client.key1").show()
df.select("client.key1", "client.key2").show()
在 spark 中试试这个 sql:
select map_filter(your_map_name, (k,v) -> k == 'desired_key) from spark_table
这将为您提供整个 key:value 作为输出。如果您只想要值,请尝试以下操作:
select map_values(map_filter(your_map_name, (k,v) -> k == 'desired_key)) from spark_table