1

Python でハイブから寄木細工のテーブルを処理しようとしていますが、いくつかのデータ型の問題に直面しています。たとえば、ハイブ寄木細工のテーブルに aa フィールドがある場合

decimal (10,2)、Pythonでファイルを読み込もうとしているときにジャンク値を与えます。これについていくつか入力してください。

4

1 に答える 1

0

適切な答えではありませんが、これは少し役立つかもしれないと思いました。たとえば、Parquet に格納する前に、PySpark ジョブにこのメソッドを使用して、Pandas DataFrames で問題なく読み取れるように小数を浮動小数点数に変換します。この場合、私は型を縮小していますが、あなたはアイデアを得る:

def shrink_types(df):
    """Reduce data size by shrinking the types"""

    # Loop through the data type tuples and downcast the column
    for t in df.dtypes:
        column_name = t[0]
        column_type = t[1]

        if column_type == 'double' or 'decimal' in column_type:
            df = df.withColumn(
                column_name,
                F.col(column_name).cast('float')
            )

return df

次に、次の方法で呼び出します。

equities_df = shrink_types(equities_df)

# Save and restore so it actually runs
equities_df.write.mode('overwrite').parquet(
    path='s3://bucket/path/dataset.parquet',
)
于 2020-11-12T17:31:00.540 に答える