2016-12-27 14 views
2

У меня очень большой CSV, где каждая строка содержит идентификаторы клиентов и магазинов, а также информацию о транзакции. Текущий тестовый файл составляет около 40 ГБ (около 2 дней), поэтому разделение является абсолютным обязательным условием для любого разумного времени возврата для выбранных запросов.Как переместить большой файл в файлы/каталоги, используя только U-SQL и определенные поля в файле?

Мой вопрос заключается в следующем: когда мы получаем файл, он содержит данные нескольких магазинов. Я хотел бы использовать функциональность «виртуального столбца», чтобы разделить этот файл на соответствующую структуру каталогов. Эта структура «/Data/{CustomerId}/{StoreID}/file.csv».

Я еще не получил его для работы с оператором OUTPUT. Использование заявление было таким образом:

// Output to file 
OUTPUT @dt 
TO @"/Data/{CustomerNumber}/{StoreNumber}/PosData.csv" 
USING Outputters.Csv(); 

Это дает следующее сообщение об ошибке:

Bad request. Invalid pathname. Cosmos Path: adl://<obfuscated>.azuredatalakestore.net/Data/{0}/{1}/68cde242-60e3-4034-b3a2-1e14a5f7343d 

Кто-нибудь попытки такого же рода вещи? Я попытался связать выходной путь с полями, но это было нехорошо. Я думал о том, чтобы делать это как функцию (UDF), которая берет два идентификатора и фильтрует весь набор данных, но это кажется ужасно неэффективным.

Заранее благодарим за чтение/ответ!

ответ

2

(Лазурное озеро данных Команда здесь)

В настоящее время U-SQL требует, чтобы все файловые выходы сценария должны быть поняты во время компиляции. Другими словами, выходные файлы не могут создаваться на основе входных данных.

Динамические выходы на основе данных являются то, что мы активно работаем для выпуска через некоторое время в 2017.

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

Первый скрипт будет использовать GROUP BY, чтобы идентифицировать все уникальные комбинации CustomerNumber и StoreNumber и записать их в файл.

Затем посредством использования сценариев или инструмента, записанного с помощью наших SDKs, загрузите предыдущий выходной файл, а затем программно создать сценарий второй U-SQL, который имеет явное заявление OUTPUT для каждой пары CustomerNumber и StoreNumber

+0

Совершенных ! Большое спасибо за ответ! (Я немного взволнован, фактически слыша от команды!) –

+0

Чтобы добавить к ответу Saveen: запрос функции отслеживается по адресу https://feedback.azure.com/forums/327234-data-lake/suggestions/10550388-support -dynamic-вывод-файл-имена-в-adla. Не стесняйтесь добавлять свой голос, хотя функция находится в разработке. –

 Смежные вопросы

  • Нет связанных вопросов^_^