Как загрузить огромные наборы данных размером от 100 ГБ до 1 ТБ, используя Presto в Python? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу создать искровой фрейм данных, используя Presto.В настоящее время я могу создать фрейм данных pandas из Presto, используя следующий код:

def get_pandas_dataframe(self, hql, parameters=None):
        if not self.airflow_conn_reqd:
            import pandas
            cursor = self.presto_client.cursor()
            try:
                cursor.execute(self._strip_sql(hql), parameters)
                data = cursor.fetchall()
            except DatabaseError as e:
                raise PrestoException(self._get_pretty_exception_message(e))
            column_descriptions = cursor.description
            if data:
                df = pandas.DataFrame(data)
                df.columns = [c[0] for c in column_descriptions]
            else:
                df = pandas.DataFrame()
        else:
            df = self.get_pandas_df(hql)
        return (
            df.replace('', np.nan)
        )

Я думал о создании фрейма данных spark с использованием чего-то подобного.Но для этого мне нужно быть уверенным, что я могу получить все данные из Presto в своем коде Python.Я знаю, что могу сделать это напрямую, используя Spark, но не уверен, что с Presto-Python.

Я реализовал spill-on-disk в Presto и убедился, что вставка работает нормально.,Но поскольку создание фрейма данных было бы задачей в памяти , мне неясно, как мне создать фрейм искровых данных с использованием Presto.

Я размышлял над тем, как создатьКак обычно, искра датафрейма и data.data взято из cursor.fetchall(), но я не знаю, как Presto будет работать в огромных масштабах.

Другими словами, как мне создать искровой фрейм данных непосредственно из Presto?

...