将 pyspark 转换为 scala:读取多个目录
Converting pyspark to scala: Reading multiple directories
我有一个 parquet 格式的文件列表,我将这些文件加载并合并到 PySpark 中的一个数据帧中。
paths = ['file1', 'file2', 'file3']
df_list = map(lambda x:(spark.read.parquet(x)), paths)
df = reduce(lambda df1, df2: df1.unionAll(df2), df_list)
我想用 Scala 做同样的操作。但是,当我在 Scala 路径列表
上使用地图操作时
val df_list = map(x = > (spark.read.parquet(x)), paths)
我收到以下错误:
:139: error: overloaded method value parquet with
alternatives: (paths: String*)org.apache.spark.sql.DataFrame
(path: String)org.apache.spark.sql.DataFrame cannot be applied to
(List[String])
val df_list = map(x = > (spark.read.parquet(x)), paths)
任何解决问题的建议都将不胜感激。
试试这个:
val df_list = paths.map(x => spark.read.parquet(x))
val df = df_list.reduce(_.union(_))
问题是在 Scala 中 map
和 reduce
是集合方法。
这里的首选方法是使用 skip union
并直接使用可变参数加载数据:
spark.read.parquet(paths: _*)
我有一个 parquet 格式的文件列表,我将这些文件加载并合并到 PySpark 中的一个数据帧中。
paths = ['file1', 'file2', 'file3']
df_list = map(lambda x:(spark.read.parquet(x)), paths)
df = reduce(lambda df1, df2: df1.unionAll(df2), df_list)
我想用 Scala 做同样的操作。但是,当我在 Scala 路径列表
上使用地图操作时val df_list = map(x = > (spark.read.parquet(x)), paths)
我收到以下错误:
:139: error: overloaded method value parquet with alternatives: (paths: String*)org.apache.spark.sql.DataFrame
(path: String)org.apache.spark.sql.DataFrame cannot be applied to (List[String]) val df_list = map(x = > (spark.read.parquet(x)), paths)
任何解决问题的建议都将不胜感激。
试试这个:
val df_list = paths.map(x => spark.read.parquet(x))
val df = df_list.reduce(_.union(_))
问题是在 Scala 中 map
和 reduce
是集合方法。
这里的首选方法是使用 skip union
并直接使用可变参数加载数据:
spark.read.parquet(paths: _*)