قراءة البيانات في أدلة متعددة

0

أريد قراءة العديد من ملفات الباركيه في مسارات مختلفة. أريد أولاً إنشاء قائمة سلاسل تحتوي على كافة المسارات في النموذج:

\local\id_*_*\data\version.*\*

مثال:

\local\id_231_2232318\data\version.501\part1.parquet ... \local\id_7_456\data\version.502\part1.parquet \local\id_7_456\data\version.502\part2.parquet

كيف أقوم بذلك؟

ربما هذا سيساعد ولكنه تنفيذ مختلف. قراءة سبارك الدلائل المتعددة في أطر البيانات المتعددة

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{ FileSystem, Path }

val path = "\local\"

val hadoopConf = new Configuration()
val fs = FileSystem.get(hadoopConf)
val paths: Array[String] = fs.listStatus(new Path(path)).
  filter(_.isDirectory).
  map(_.getPath.toString)

val dfs: Array[DataFrame] = paths.
  map(path => spark.read.parquet(path + "id_*_*\data\version.*\*"))

1 إجابة

1
افضل جواب

حسنًا ، أعتقد أنه الحل الأسرع وقد نجح معي. الناتج ليس باركيه واحد.

val src_path = "hsfs:///local/id_*_*/data/version.*/*"
val df = spark.read.parquet(src_path)
df.write.parquet("hdfs:///destination/path/")
:مؤلف
فوق
قائمة طعام