Nano Hash - криптовалюты, майнинг, программирование

Скрипт Pig для замены любого разрыва строки из столбца

Я снял некоторые столбцы из CSV, используя скрипт свиньи:

Cleaned = FOREACH data generate  $0 .. $8,$11 .. $27, $31 .. $41, $45 .. $97, $99 .. $111;

В столбцах, которые я сохранил, мне нужно удалить любой новый символ строки, который может повредить мои данные в улье. Будь то \n или \r или \r\n или <br>. Поскольку это данные, введенные пользователем, я считаю, что разрывы строк, созданные при вводе данных с помощью клавиши ввода, будут одним из символов, упомянутых выше, был бы признателен, если бы вы также могли указать, во что они преобразуются, но по большей части мне нужно сделать убедиться, что из данных удален любой вид разрыва строки, чтобы убедиться, что мои данные правильно отображаются парсером hive CSV. Как мне сделать это в скрипте свиньи, который я использую для фильтрации столбцов?

Изменить: 1. Я хочу продолжать использовать диапазон столбцов вместо указания каждого столбца. 2. В указанном примере не учитываются все типы символов новой строки.

09.10.2016

  • Возможный дубликат Pig - Удалить перевод строки, возврат и вкладку 09.10.2016
  • B = FOREACH A GENERATE REPLACE(REPLACE(id,'\n',''),',','') AS id, REPLACE(REPLACE(date,'\n',''),',','') AS date, REPLACE(REPLACE(text,'\n',''),',','') AS text; это всего лишь пример, который вы можете настроить stackoverflow.com/questions/31394130/ 09.10.2016
  • @ Hack-R: я наткнулся на этот пример. Здесь я указал диапазон столбцов. Как мне интегрировать диапазон столбцов с этим? 09.10.2016
  • Побочное примечание: вы настраиваете себя на мир боли, если вы ссылаетесь на столбцы по их положению, и ваш ввод изменяется, а столбец добавляется/удаляется где-то посередине. Мой (личный) совет — ссылаться на столбцы по имени, а не по номеру. (Например, FirstCol .. SomeCol, а не $0 .. $8. Обратите внимание, что это по-прежнему позволяет вам работать с диапазонами. 26.10.2016

Ответы:


1

Поскольку у вас большое количество столбцов, вам лучше загрузить данные как line:chararray, а затем использовать функцию REPLACE. После очистки данных вы можете использовать STRSPLIT, чтобы разделить строку на столбцы, а затем использовать диапазон, чтобы получить обязательные столбцы.

A = LOAD 'data.csv' AS (line:chararray);
B = FOREACH A GENERATE REPLACE(REPLACE(REPLACE(REPLACE(line,'\\n',''),'\\r',''),'\\r\\n',''),'<br>','');
C = FOREACH B GENERATE FLATTEN(STRSPLIT($0,','));
D = FOREACH C GENERATE  $0 .. $8,$11 .. $27, $31 .. $41, $45 .. $97, $99 .. $111;
DUMP D;
10.10.2016
  • Можем ли мы использовать replace(line, '(\n|\t)', '') вместо нескольких функций replace()? 23.01.2017
  • @Shekhar Нет. Синтаксис REPLACE: REPLACE (string, 'oldChar', 'newChar'); Вы не можете использовать регулярное выражение или заменять несколько символов, используя | в одной замене, если только более новая версия Pig не имеет такой возможности. Лучший способ — протестировать ее самостоятельно. 23.01.2017

  • 2

    Вы можете использовать класс хранения «org.apache.pig.piggybank.storage.CSVExcelStorage(',')» для импорта данных, а затем вы можете использовать команду замены для замены символов «новой строки» данными поля.

    ЗАРЕГИСТРИРОВАТЬСЯ /usr/lib/pig/piggybank.jar; a = ЗАГРУЗИТЬ '/path/to/file.csv' ИСПОЛЬЗОВАНИЕ org.apache.pig.piggybank.storage.CSVExcelStorage(',') b = FOREACH a GENERATE $1; ДАМП б

    Piggybank — это банка по умолчанию, поэтому она должна быть доступна без регистрации.

    14.03.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..