#python #hive #mapr
#python #улей #mapr
Вопрос:
У меня есть такая таблица в MapR.
данные были разделены запятыми на серверной части. Я пытаюсь использовать пользовательское сокращение карты при использовании python. Вот код python.
import sys
import datetime
try:
for line in sys.stdin:
line = line.strip()
userid, movieid, rating, unixtime = line.split(',')
weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
print ','.join([userid, movieid, rating, unixtime, str(weekday)])
except:
print sys.exc_info()
Я добавил скрипт python, используя add File
отправленный запрос, подобный этому
select TRANSFORM (userid,movieid,rating,unixtime) using 'python mod.py' as (userid,movieid,rating,weekday) from u_data;
Ошибка, которую я получаю здесь
(<type 'exceptions.ValueError'>, ValueError('need more than 1 value to unpack',), <traceback object at 0x7f24dea1a0e0>) NULL NULL NULL
Почему я получаю эту ошибку?
Комментарии:
1. Вы должны удалить попытку / исключение и позволить напечатать полное исключение (и трассировку).
2. Я действительно пробовал это, вот
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script
трассировка стека @RushyPanchal3. Я бы предположил, что вы получаете пустую строку где-то во входных данных (возможно, в конце, если после последней строки данных есть дополнительная новая строка). Добавление
if not line: continue
в ваш цикл (сразу послеstrip
) позволит вам пропустить пустые строки.
Ответ №1:
Единственная строка в вашем коде, которая может выдать вам эту ошибку, — это:
userid, movieid, rating, unixtime = line.split(',')
Итак, он жалуется, что недостаточно значений для распаковки, что означает, что в строке нет запятых. Попробуйте распечатать строку перед ее обработкой; таким образом, вы легко сможете определить, какие данные вы получаете и как вам нужно их обработать.
Комментарии:
1. Вот часть журнала,
Stage-Stage-1: Map: 1 Cumulative CPU: 1.01 sec MAPRFS Read: 0 MAPRFS Write: 0 SUCCESS Total MapReduce CPU Time Spent: 1 seconds 10 msec OK 1 101 8 1369721454 (<type 'exceptions.ValueError'>, ValueError('need more than 1 value to unpack',), <traceback object at 0x7f87a6881050>) NULL NULL NULL Time taken: 22.7 seconds, Fetched: 2 row(s)
2. Итак, да? По крайней мере, в этой строке нет запятых. Очевидно, что вы не получаете то, что ожидаете. Итак, выясните, что вы получаете, и напишите код, чтобы справиться с этим, вместо того, что у вас есть сейчас.
3. Он способен отображать 4 столбца в строке, вот ссылка link @kindall
4. Запятых по-прежнему нет.
5. поскольку строка отображается как разделенная табуляцией, я разделил строку на
t
вот код python, а вот выполнение запроса . Итак, где я ошибаюсь.