2016-08-16 2 views
0

Я запускаю Spark 1.3.0 и хочу прочитать несколько паркетных файлов на основе соответствия шаблонов. файлы паркета в основном являются базовыми файлами Hive DB, и я хочу читать только некоторые файлы (в разных папках). структура папкиПрочтите файлы паркета в Spark с совпадением рисунков

hdfs://myhost:8020/user/hive/warehouse/db/blogs/some/meta/files/ 
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/01/file1.parq   
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/02/file2.parq 
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160103/01/file3.parq 

Что-то вроде

val v1 = sqlContext.parquetFile("hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd={[0-9]*}") 

Я хочу, чтобы игнорировать мета-файлы и загружать только паркетные файлы внутри папки даты. Это возможно?

ответ

0

вы можете использовать подстановочные паркетом, как так (работает на 1.5 не тестировал на 1.3):

val v1 = sqlContext.parquetFile("hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd*") 

другая вещь, вы можете сделать в случае, если не работает, является создание внешней таблицы с помощью улей с разделом на yymmdd и считывать паркет из этой таблицы, используя:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
sqlContext.sql("SELECT FROM ...") 

Вы не можете использовать регулярное выражение.

тоже думаю, папка структура проблемный. это должно быть hdfs: // myhost: 8020/user/hive/warehouse/db/blogs/yymmdd = 150204/ или hdfs: // myhost: 8020/user/hive/warehouse/db/blogs/yymmdd = 150204/часть = 01 и нет: HDFS: // MyHost: 8020/пользователя/ульи/склад/дб/блог/ггммдд = 150204/1

, потому что они, как вы используете его, я думаю, что вы будете иметь проблемы с использованием имена папок (yymmdd) как раздел, потому что файлы не находятся под ним

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