【问题标题】:how can I filter dataset to a new dataset by map?如何通过地图将数据集过滤到新数据集?
【发布时间】:2019-05-01 12:25:17
【问题描述】:

我有 DataFrame 和一个数组

输入:

1. an array,array's length is uncertain.
array[eason,wency,kobe...]

2. dataframe like this:
    name   grade   
    eason    90
    evan     80
    wency    70
    elton    50  
    frank    90
    ...      ..
    kobe     90

输出:根据数组的元素过滤该数据帧的输入:

name   grade
eason   90
wency   70
kobe    90
...     ..

如何通过 map 或其他 spark api 获取新的数据帧? 请,任何想法。

【问题讨论】:

  • 请添加语言标签,并更清楚地解释您的输入和输出之间的区别应该是什么
  • 我同意,您在此处指定的输入和输出看起来几乎相同,但不清楚打算进行哪些更改。

标签: dataframe dataset


【解决方案1】:

您可以从数组中构造 Spark DataFrame,如下所示:

scala> val arr = Array("eason", "wency", "elton", "kobe")
arr: Array[String] = Array(eason, wency, elton, kobe)
scala> val df = sc.parallelize(arr).toDF("name")
df: org.apache.spark.sql.DataFrame = [name: string]
scala> df.show()
+-----+
|name|
+-----+
|eason|
|wency|
|elton|
| kobe|
+-----+

一旦从 Array 构造 DataFrame,您就可以使用通用名称字段连接 2 个 DataFrame。

其他数据框:

scala> otherDF.show()
+-----+-----+
| name|grade|
+-----+-----+
|eason|   90|
| evan|   80|
|wency|   70|
|elton|   50|
|frank|   90|
| kobe|   90|
+-----+-----+

使用名称字段连接两个数据框:

scala> val joinedDF = otherDF.join(df, "name")
joinedDF: org.apache.spark.sql.DataFrame = [name: string, grade: int]

scala>

scala> joinedDF.show()
+-----+-----+
| name|grade|
+-----+-----+
|eason|   90|
|wency|   70|
|elton|   50|
| kobe|   90|
+-----+-----+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多