Я работаю над проектом прогнозирования временных рядов на R. Однако мне нужно получить данные из таблиц, расположенных в среде Hadoop. Я использую Sparklyr для доступа к этим таблицам. Но я понял странную проблему после завершения передачи данных.
Мой столбец даты смещается на один день, и я вижу данные 27.03.2017 в строке, представляющей 26.03.2017.
sc <- spark_connect(master = "yarn-client",
spark_home = "/usr/hdp/current/spark2-client/",
config = conf)
invoke(hive_context(sc), "sql", "USE mydb")
data <- tbl(sc, 'mydata_raw')
data.df <- data.frame(data)
filter(data.df, date == "2018-05-05")
date unit
<date> <int>
1 2018-05-04 1111
В моих кустовых таблицах такой проблемы нет.
Я проверил это. Мой сеанс R и узлы Hive находятся в одном часовом поясе. Я не уверен, есть ли проблема, связанная с часовым поясом.
Сталкиваетесь ли вы с той же проблемой, когда используете Apache Spark напрямую (скажем, с API Scala или Python), или это происходит только в sparklyr? Кроме того, как вы создали таблицу в Hive? Не могли бы вы предоставить соответствующий оператор DDL и схему на стороне Spark?
У меня не было такой проблемы, когда я использовал pyspark. Это происходит только в sparklyr. Я передаю данные в HDFS с помощью Kylo, затем создаю таблицу в Hive. Вы имеете в виду утверждение, которое я использовал для создания таблицы в Hive. Если да, то это код CREATE TABLE mydb.mydata_raw ( date DATE, unit INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u003B' STORED AS TEXTFILE location '/mypath/myfolder' TBLPROPERTIES("orc.compress" = "snappy");
Я не могу воспроизвести это, но это определенно не ожидаемое поведение, поэтому я рекомендую посещение системы отслеживания ошибок sparklyr и создать проблему. Этот вопрос поднимался на SO раньше, но никогда (насколько мне известно) не видел за пределами sparklyr. Чтобы дополнительно определить вину, вы можете проверить filter(data.df, date == "2018-05-05") %>% spark_dataframe() %>% invoke("show"), а затем spark_log(sc), чтобы убедиться, что собственный вывод Spark выглядит нормально. Если вы решите открыть вопрос, пожалуйста, зайдите и оставьте редактирование/комментарий со ссылкой.
Привет, я создал проблему в системе отслеживания ошибок Sparklyr, вот ссылка; github.com/rstudio/sparklyr/issues/1954





Я не знаю
Sparklyrно первым делом я бы проверил, отличаются ли часовые пояса.