斯卡拉 Spark : How to create a RDD from a list of string and convert to DataFrame

标签 scala apache-spark dataframe rdd union-all

我想从可以匹配现有模式的字符串列表中创建一个 DataFrame。
这是我的代码。

    val rowValues = List("ann", "f", "90", "world", "23456") // fails
    val rowValueTuple = ("ann", "f", "90", "world", "23456") //works

    val newRow = sqlContext.sparkContext.parallelize(Seq(rowValueTuple)).toDF(df.columns: _*)

    val newdf = df.unionAll(newRow).show()

如果我使用字符串列表,则相同的代码将失败。我看到不同之处在于 rowValueTuple 创建了一个 Tuple
由于 rowValues 列表的大小动态变化,我无法手动创建 Tuple* 对象。
我怎样才能做到这一点?我错过了什么?我怎样才能展平这个列表以满足要求?

感谢您的帮助,拜托。

最佳答案

DataFrame 具有固定列数的架构,因此为每个可变长度列表创建行似乎并不自然。无论如何,您可以使用现有架构从 RDD[Row] 创建您的 DataFrame,如下所示:

val rdd = sqlContext.sparkContext.parallelize(Seq(rowValues))
val rowRdd = rdd.map(v => Row(v: _*))
val newRow = sqlContext.createDataFrame(rdd, df.schema)

关于斯卡拉 Spark : How to create a RDD from a list of string and convert to DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769169/

相关文章:

java - 列出的哪个 .jar 包含类 'com.twitter.finagle.stats.ExceptionStatsHandler' ?

java - 在单例中使用 Apache CloseableHttpClient 的风险

scala - Spark 中拆分列并将空值转换为 null

python - 将文件列表读入数据帧列表

python - 困难的重复数据删除

python - 如何在 pandas.multiindex 级别应用条件?

scala - promise 有缺陷吗?

java - 根据文件包含计算md5哈希值(意味着没有文件名)

scala - Spark : Average of values instead of sum in reduceByKey using Scala

scala - Spark Scala 的机器学习管道