Почему соединение Happybase с Hbase Thrift просто перестало работать?
Вчера у меня был код, работающий и читающий из Hbase, передающий большие объемы данных. Я не касался кода и, тем не менее, каким-то образом, когда я вернулся к нему сегодня, он не хочет распечатывать данные. Единственное, что я сделал на сервере, - это установил среду REST для записи в базу данных. Вот часть кода, который работает (кажется, что он получает соединение)-
import happybase
connection = happybase.Connection('<ip-address>', '9090')
table = connection.table('rawdataingestion')
Затем, когда он добирается до этой части, он просто перестает работать.
n = 0
li = []
for key, data in table.scan(row_start=None):
data = json.loads(data['cf:rawmsg'])
li.append(data)
n += 1
if n == 1000:
break
Как я уже сказал, единственное, что изменилось на сервере, это то, что я настроил порт REST (8000). Это проблема? Все, что мне нужно, это извлечь данные из базы данных.
1 ответ
Поправьте меня, если я ошибаюсь, но кажется, что REST и THRIFT не работают на одном сервере одновременно. Таким образом, похоже, что я могу либо извлечь данные из Hbase, используя THRIFT, либо передать данные в Hbase, используя REST. Если одна программа работает с извлечением данных, другая программа, которая выталкивает данные, не будет работать, и наоборот.
Я решил проблему, набрав jps
(вы также можете использовать ps -a
), чтобы найти номер, соответствующий процессу THRIFT. Затем я убил процесс с kill 12345
, После этого я перезапустил THRIFT в фоновом режиме, набрав ./hbase-daemon.sh start thrift
, После этого моя программа могла успешно извлекать данные из базы данных, но моя другая программа, которая вставляет данные, перестала работать.
В коде нет ничего плохого, проблема в том, что REST и THRIFT не работают на одном сервере одновременно.