Usando el comando put de HBase en el operador bashOperator de airflow.
Estoy tratando de insertar datos en una tabla de Hbase con una tarea BashOperator
de Airflow. Intento primero llamar al shell de Hbase y luego insertar algunos datos en mi tabla:
logg_data_to_hbase = BashOperator(
task_id='data_to_hbase',
dag=test_dag,
bash_command="hbase shell && put 'tablename', 'rowname', 'columnvalue', 1000")
Recibo un error que dice ERROR – El comando Bash falló.
[2022-01-06 11:01:17,077] {bash_operator.py:100} INFO – Ubicación temporal del script: /tmp/airflowtmpcKRT8C/data_to_hbaseY7y25j
[2022-01-06 11:01:17,077] {bash_operator.py:110} INFO – Ejecutando comando: hbase shell && put ‘tablename’, ‘rowname’, ‘columnvalue’, 1000
[2022-01-06 11:01:17,091] {bash_operator.py:119} INFO – Salida:
[2022-01-06 11:01:28,659] {bash_operator.py:123} INFO – /tmp/airflowtmpcKRT8C/data_to_hbaseY7y25j: line 1: put: comando no encontrado
[2022-01-06 11:01:28,660] {bash_operator.py:127} INFO – El comando finalizó con el código de retorno 127
[2022-01-06 11:01:28,672] {models.py:1788} ERROR – El comando Bash falló
Traceback (most recent call last): File “/opt/python-2.7.16-AF-1.10.2-XXX/lib/python2.7/site-packages/airflow/models.py”, line 1652, in _run_raw_task
result = task_copy.execute(context=context) File “/opt/python-2.7.16-AF-1.10.2-XXX/lib/python2.7/site-packages/airflow/operators/bash_operator.py”, line 131, in execute
raise AirflowException(“El comando Bash falló”) AirflowException: El comando Bash falló
¿Qué debo cambiar para ejecutar el comando put?
davy.ai
El comando
put
no es reconocido por la consola de HBase porque no forma parte de los comandos base de la consola de HBase. Es necesario cargar los comandos de la consola de HBase para que el comandoput
sea reconocido. Una forma de hacer esto es utilizar la opción-n
al llamar al comando de la consola de HBase para cargar los comandos necesarios desde el directorio de instalación de HBase de la siguiente manera:por lo tanto, la definición actualizada de la tarea
bashoperator
sería:por lo tanto, la definición actualizada de la tarea
bashoperator
sería:logg_data_to_hbase = bashoperator(
>task_id='data_to_hbase',
dag=test_dag,
bash_command="hbase shell -n <<eof\nput 'tablename', 'rowname', 'columnvalue', 1000\neof")