2017-04-07 3 views
0

csv 파일에서 쪽매 파일을 만들고 싶습니다. 테스트 목적으로 파일을 읽고 팬더 데이터 프레임을 먼저 변환 한 다음 파이 로우 테이블로 변환하는 코드 조각 아래에 있습니다. 이 테이블은 AWS S3에 저장되며 테이블에서 하이브 쿼리를 실행하려고합니다.여기 엔 나무 마루 만들기 pandas 데이터 프레임에서 pyarrow 테이블로의 변환이 개체 dtype에서 작동하지 않습니다

입력 파일 내용 :

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 값은 그러나 객체/STR 값이 변환 된 벌금을하지 않는, 잘 보여줍니다.

감사합니다.

감사합니다.

+0

인사를 지정하면 https://issues.apache.org에 문제를 열어 줄래하세요/jira/browse/ARROW 그리고 거기에서 디버깅을 도울 수 있습니까? –

+0

이 문제를 추적하려면 여기를 클릭하십시오 : https://issues.apache.org/jira/browse/ARROW-785 – Jeff

+0

자세한 내용은 JIRA를 업데이트하십시오. – Ash

답변

0

이것은 둥근 제거를 위해 나를 복제 한 것입니다. , python, pandaspyarrow

의 & 버전 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 .__ 0.2.0 ' 문제 version__ u'0.19.2' version__ 파 >>> PA .__로 >>> 수입 pyarrow이 '를 통해 쿼리 할 때 발생하는 것 같다 하이브. 아래와 같은 마루 파일의 상단에 하이브 테이블을 생성 : %의 SQL하지 마루 LOCATION로 저장 schema_abc.parquet_table_name ( 년 INT , WORD STRING ) 가있는 경우 은 외부 테이블 만들기 'S3 : // BUCKET_NAME/folder/parquet_files/' ***주의 : parquet_files 폴더에 testFile.parquet 파일이 있습니다. – Ash