2016-04-25 3 views
1

У меня есть список json-файлов, которые я бы хотел загрузить параллельно.Чтение нескольких json-файлов из Spark

Я не могу использовать файлы read.json("*"), потому что файлы не находятся в одной папке, и я не могу создать определенный шаблон.

Я пробовал sc.parallelize(fileList).select(hiveContext.read.json), но контекст hive, как и ожидалось, не существует в исполнителе.

Любые идеи?

ответ

2

Похоже, я нашел решение:

val text sc.textFile("file1,file2....") 
val df = sqlContext.read.json(text) 
0

Кроме того, вы можете указать каталог в качестве параметра:

cat 1.json 
{"x": 1.0, "y": 2.0} 
{"x": 1.5, "y": 1.0} 
sudo -u hdfs hdfs dfs -put 1.json /tmp/test 

cat 2.json 
{"x": 3.0, "y": 4.0} 
{"x": 1.8, "y": 7.0} 
sudo -u hdfs hdfs dfs -put 2.json /tmp/test 

sqlContext.read.json("/tmp/test").show() 
+---+---+ 
| x| y| 
+---+---+ 
|1.0|2.0| 
|1.5|1.0| 
|3.0|4.0| 
|1.8|7.0| 
+---+---+  
+0

да, но это работает только в случае, если все файлы находятся в одной папке. Если у нас есть несколько файлов в разных каталогах, единственный способ их прочитать параллельно - это только текстовый файл –

Смежные вопросы