2017-04-07 52 views
0

我想从csv文件创建地板文件。出于测试目的,我有一段代码读取一个文件,并将其转换为熊猫数据帧,然后转换为pyarrow表。此表然后存储在AWS S3上,并希望在表上运行配置单元查询。实木复合地板创建从熊猫数据框转换为pyarrow表不适用于对象dtype

Inputfile中的内容:

YEAR|WORD 
2017|Word 1 
2018|Word 2 

代码:

dataFrame=pd.read_csv(inputFile, sep='|') 
print(dataFrame) 
print(dataFrame.dtypes) 
print(dataFrame.columns) 
dataFrame['C1'] = dataFrame['C1'].astype('str') 
print(dataFrame.dtypes) 
table=pa.Table.from_pandas(dataFrame)#,schema=pa.string()) 
pq.write_table(table, outputFile) 

写入pyarrow表后,我询问了拼花文件,以确保数据良好将存储在S3。然而结果很奇怪:

+--------+--------------+ 
| YEAR |  WORD  | 
+--------+--------------+ 
| 2017 | [[email protected] | 
| 2018 | [[email protected] | 
+--------+--------------+ 

不知何故int值显示很好,但是object/str值没有被正确转换。

感谢您对此的帮助。

谢谢。

+0

嗨,你会介意https://issues.apache.org打开的问题/ jira/browse/ARROW,我们可以帮助调试吗? –

+0

这是一个跟踪此问题的箭头问题:https://issues.apache.org/jira/browse/ARROW-785 – Jeff

+0

更新了JIRA的更多细节。使用以下版本 – Ash

回答

0

这个复制对我来说很适合往返。请注明您的平台&版本pythonpandaspyarrow

在3.6/macox(也工作2.7)

In [1]: import pandas as pd 

In [2]: import pyarrow as pa 

In [3]: pd.__version__ 
Out[3]: '0.19.2' 

In [4]: pa.__version__ 
Out[4]: '0.2.0' 

In [5]: data = """YEAR|WORD 
    ...: 2017|Word 1 
    ...: 2018|Word 2 
    ...: """ 

In [6]: df = pd.read_csv(StringIO(data), sep='|') 

In [7]: df 
Out[7]: 
    YEAR WORD 
0 2017 Word 1 
1 2018 Word 2 

In [8]: df.dtypes 
Out[8]: 
YEAR  int64 
WORD object 
dtype: object 

In [9]: table=pa.Table.from_pandas(df) 

In [10]: import pyarrow.parquet as pq 

In [12]: pq.write_table(table, 'foo.pk') 

In [13]: pq.read_table('foo.pk').to_pandas() 
Out[13]: 
    YEAR WORD 
0 2017 Word 1 
1 2018 Word 2 

In [14]: pq.read_table('foo.pk').to_pandas().dtypes 
Out[14]: 
YEAR  int64 
WORD object 
dtype: object 
+0

: >>> PD .__ version__ u'0.19.2' >>>进口pyarrow为PA >>> PA .__ version__ '0.2.0' 问题似乎通过查询时所发生的事情蜂巢。 上镶木文件的顶部创建蜂房表象下面这样: %SQL CREATE EXTERNAL TABLE IF NOT EXISTS schema_abc.parquet_table_name( YEAR INT ,WORD STRING ) 存储为PARQUET LOCATION“S3,// BUCKET_NAME /文件夹/ p​​arquet_files /' ***请注意:parquet_files文件夹中包含testFile.parquet文件。 – Ash