WedX - журнал о программировании и компьютерных науках

Вставка данных в таблицу Hive с помощью HiveContext с помощью Spark Scala

Мне удалось вставить данные в таблицу Hive из моего искрового кода, используя HiveContext, как показано ниже.

   val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
   sqlContext.sql("CREATE TABLE IF NOT EXISTS e360_models.employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")

   sqlContext.sql("insert into table e360_models.employee select t.* from (select 1210, 'rahul', 55) t")
   sqlContext.sql("insert into table e360_models.employee select t.* from (select 1211, 'sriram pv', 35) t")
   sqlContext.sql("insert into table e360_models.employee select t.* from (select 1212, 'gowri', 59) t")

   val result = sqlContext.sql("FROM e360_models.employee SELECT id, name, age")
   result.show()

Но этот подход создает отдельный файл на складе для каждой вставки, как показано ниже.

part-00000
part-00000_copy_1
part-00000_copy_2
part-00000_copy_3

Есть ли способ избежать этого и просто добавить новые данные в один файл или есть другой лучший способ вставить данные в куст из искры?


  • Вам удалось решить эту проблему? Я провел небольшое исследование и не повезло! 20.04.2017

Ответы:


1

Нет, нет никакого способа сделать это. Каждая новая вставка будет создавать новый файл. Это не «проблема» Spark, а общее поведение, которое вы можете испытать и с Hive. Единственный способ - выполнить одну вставку с UNION всех ваших данных, но если вам нужно сделать несколько вставок, у вас будет несколько файлов.

Единственное, что вы можете сделать, это включить слияние файлов в улье (посмотрите здесь: Hive Создание нескольких небольших файлов для каждой вставки в HDFS и https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties).

02.06.2016
  • Будут ли эти отдельные файлы занимать 64 МБ (размер блока по умолчанию) * 3 (коэффициент репликации) или только фактический размер файлов * коэффициент репликации? 02.06.2016
  • Я думаю, вы можете найти ответ здесь: stackoverflow.com/questions/13012924/ 02.06.2016
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]