#scala #spark-dataframe
#scala #apache-spark-sql
Вопрос:
У меня есть требование распараллелить фреймы данных Scala для загрузки различных таблиц. У меня есть таблица фактов, содержащая около 1,7 ТБ данных. Загрузка занимает около 5 минут. Я хочу одновременно загружать свои таблицы измерений, чтобы я мог уменьшить общий scala. Я не очень хорошо разбираюсь в параллельном API в Scala ?.
Ответ №1:
Вам нужно прочитать Spark — весь смысл в том, чтобы распараллелить обработку данных за пределами одной машины. По сути, Spark распараллелит нагрузку на столько задач, сколько у вас будет выполняться параллельно — все зависит от того, как вы настроили свой кластер — из вопроса, который, как я предполагаю, вы используете только on, и что вы запустили его в локальной модели, и в этом случае вы должны, по крайней мере, запустить его с помощью local[количество процессорову вас есть]
Если я не прояснил, вам также не следует использовать какие-либо другие API параллелизма Scala
Комментарии:
1. SQLContext.sql(«ИЗ Fact_Table ВЫБЕРИТЕ ключ, значение»).collect().foreach(println) SQLContext.sql(«ИЗ Dimension1 ВЫБЕРИТЕ ключ, значение»).collect().foreach(println) SQLContext.sql(«ИЗ Dimension2 ВЫБЕРИТЕ ключ, значение»).collect().foreach(println) Если я выполняю команды таким образом, я бы сначала выполнил выбор таблицы фактов, затем Размерность 1, а затем размерность 2. В приведенном выше случае я хотел бы одновременно запускать инструкции для одновременной загрузки таблицы фактов и таблиц измерений, а не последовательно
2. не собирать — он отправляет все данные обратно исполнителю. Кажется, это проблема XY ( xyproblem.info ) Вероятно, вам следует задать другой вопрос, касающийся именно того, что вы пытаетесь решить
3. Я привел пример, в идеале мы будем выбирать в различные фреймы данных, а затем объединять все фреймы данных и таблицу фактов, чтобы получить итоговую таблицу. Но мой вопрос заключается в том, как одновременно загружать данные из таблиц hive в фреймы данных в scala