У меня была эта проблема с Дженкинсом. Причина: я переименовал модуль module
в Module
. Я узнал, что git каким-то образом запутался и сохранил оба каталога module
и Module
, причем содержимое было распространено между обеими папками. build.gradle
хранился в module
, но имя модуля было Module
, поэтому он не смог найти конфигурацию по умолчанию.
Я исправил его, создав резервную копию содержимого Module
, вручную удалив module
из репо и восстановления + нажатия на потерянные файлы.
sqlContext.read.parquet
может принимать несколько путей в качестве входных данных. Если вы хотите просто day=5
и day=6
, вы можете просто добавить два пути, например:
val dataframe = sqlContext
.read.parquet("file:///your/path/data=jDD/year=2015/month=10/day=5/",
"file:///your/path/data=jDD/year=2015/month=10/day=6/")
Если у вас есть папки под day=X
, например say country=XX
, country
будет автоматически добавляется как столбец в dataframe
.
EDIT: Начиная с Spark 1.6 необходимо обеспечить «базовый путь» -отвержения, чтобы Spark автоматически генерировал столбцы. В Spark 1.6.x приведенное выше должно быть переписано так, чтобы создать кадр данных с столбцами «данные», «год», «месяц» и «день»:
blockquote>val dataframe = sqlContext .read .option("basePath", "file:///your/path/") .parquet("file:///your/path/data=jDD/year=2015/month=10/day=5/", "file:///your/path/data=jDD/year=2015/month=10/day=6/")
вам необходимо предоставить опцию mergeSchema = true
. как показано ниже (это от 1.6.0):
val dataframe = sqlContext.read.option("mergeSchema", "true").parquet("file:///your/path/data=jDD")
Это будет считывать все файлы паркета в dataframe, а также создает столбцы год, месяц и день в данных данных.
Ссылка: https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#schema-merging
Если вы хотите читать несколько дней, например day = 5
и day = 6
, и хотите указать диапазон в самом пути, можно использовать подстановочные знаки:
val dataframe = sqlContext
.read
.parquet("file:///your/path/data=jDD/year=2015/month=10/day={5,6}/*")
Подстановочные знаки также могут используется для указания диапазона дней:
val dataframe = sqlContext
.read
.parquet("file:///your/path/data=jDD/year=2015/month=10/day=[5-10]/*")
Это соответствует всем дням от 5 до 10.
val dataframe = sqlContext.read.parquet("file:///your/path/data=jDD/year=2015/month=10/")?
день` в качестве столбца в кадре данных, который вы можете затем фильтровать. – Glennie Helles Sindholt 11 November 2015 в 19:18filter
. Поскольку Spark делает ленивую оценку, у вас не должно быть проблем с размером набора данных. Фильтр будет применяться до любых действий, и только данные, которые вас интересуют, будут храниться в памяти. – Glennie Helles Sindholt 11 November 2015 в 20:05