如何在 spark - scala 中使用 select() 和 map()?
how to use select() and map() in spark - scala?
我正在编写使用 spark 将数据从 mysql 迁移到 cassandra 的代码。我试图概括它,以便给定一个 conf 文件,它可以迁移任何 table。我在这里停留在 2 个地方:
val dataframe2 = dataframe.select("a","b","c","d","e","f")
从 mysql 加载 table 后,我希望只 select 几列,我将这些列的名称作为列表。这里怎么用?
val RDDtuple = dataframe2.map(r => (r.getAs(0), r.getAs(1), r.getAs(2), r.getAs(3), r.getAs(4), r.getAs(5)))
同样,每个 table 可能有不同数量的列,那么如何实现呢?
- 要在
select()
中使用可变数量的列,可以像这样转换您的列列表:
val columns = List("a", "b", "c", "d")
val dfSelectedCols = dataFrame.select(columns.head, columns.tail :_*)
说明:DataFrame
's select(String, String...)
中的第一个参数是必须的,所以使用columns.head
。列表的其余部分需要使用 columns.tail :_*
.
转换为可变参数
- 你的例子不是很清楚,但我想
x
是一个 RDD[Row]
并且你正试图转换成 RDD
的 Tuple
, 正确的 ?请提供更多详细信息并使用有意义的变量名称。 x
、y
或 z
是错误的选择,尤其是在没有显式输入的情况下。
我正在编写使用 spark 将数据从 mysql 迁移到 cassandra 的代码。我试图概括它,以便给定一个 conf 文件,它可以迁移任何 table。我在这里停留在 2 个地方:
val dataframe2 = dataframe.select("a","b","c","d","e","f")
从 mysql 加载 table 后,我希望只 select 几列,我将这些列的名称作为列表。这里怎么用?val RDDtuple = dataframe2.map(r => (r.getAs(0), r.getAs(1), r.getAs(2), r.getAs(3), r.getAs(4), r.getAs(5)))
同样,每个 table 可能有不同数量的列,那么如何实现呢?
- 要在
select()
中使用可变数量的列,可以像这样转换您的列列表:
val columns = List("a", "b", "c", "d")
val dfSelectedCols = dataFrame.select(columns.head, columns.tail :_*)
说明:DataFrame
's select(String, String...)
中的第一个参数是必须的,所以使用columns.head
。列表的其余部分需要使用 columns.tail :_*
.
- 你的例子不是很清楚,但我想
x
是一个RDD[Row]
并且你正试图转换成RDD
的Tuple
, 正确的 ?请提供更多详细信息并使用有意义的变量名称。x
、y
或z
是错误的选择,尤其是在没有显式输入的情况下。