es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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 comando put 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:

    hbase shell -n <<eof
    put 'tablename', 'rowname', 'columnvalue', 1000
    eof
    

    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")
    ``` put="" 'tablename',="" 'rowname',="" 'columnvalue',="" 1000="" eof="" ```="" 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" )=""></eof
    put 'tablename', 'rowname', 'columnvalue', 1000
    eof
    

    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")
    >

Comments are closed.