Как я могу прочитать данные из DataTap с помощью cpython?

#bluedata #hpe-container-platform #ezmeral

#bluedata #hpe-container-platform #ezmeral

Вопрос:

Я хотел бы считывать данные из DataTap с помощью cpython.

В spark я могу сделать что-то вроде:

 df = spark.read.csv("dtap://MaprClus2/tmp/airline-safety.csv")
  

Как я могу сделать то же самое, если я использую cpython, например, когда у меня нет ядра pyspark Jupyter?

Комментарии:

1. Нашли ли вы какой-либо другой способ добиться этого, т.Е. Кроме использования командной строки hadoop?

Ответ №1:

Один из вариантов — использовать подпроцесс для вызова команды hadoop cli:

 from subprocess import check_output
import pandas as pd
from io import BytesIO

def hdfs_read(fpath):
    out = check_output(['hadoop', 'fs', '-cat', fpath])
    return BytesIO(out) 

data = hdfs_read("dtap://MaprClus2/tmp/airline-safety.csv")

# row 1 contains hadoop cli warning so remove it
pd.read_csv(data, sep=",", skiprows=1) 
  

Комментарии:

1. Это правильный ответ. Есть ли еще какое-либо решение pythonic? Любой пакет, поддерживающий dtap, читает на python?

2. Да — с использованием PyArrow и Pydoop. На данный момент настройка выполняется вручную, однако я надеюсь, что в следующем выпуске настройка будет автоматизирована. Я опубликую новый ответ, если это произойдет.