Сделать быстрый паркетный файл куста на кусте s3 из операционной системы Windows не удается
Следующий код работает для меня в Unix, но не работает в Windows.
from fastparquet import write
import pandas as pd
import s3fs
s3 = s3fs.S3FileSystem()
bucket = "your-bucket-name"
filepath = "s3://{b}/testspace/example.parquet".format(b=bucket)
df = pd.DataFrame({'A': [1, 1, 2, 3], 'B': [4, 5, 6, 7]})
write(filepath,
data=df,
file_scheme='hive',
object_encoding='bytes',
partition_on=['A'],
open_with=s3.open)
Это дает эту ошибку на Windows:
Traceback (most recent call last):
File "make_error_parquet.py", line 22, in <module>
open_with=s3.open)
File "C:\Anaconda\lib\site-packages\fastparquet\writer.py", line 817, in write
mkdirs(filename)
File "C:\Anaconda\lib\site-packages\fastparquet\util.py", line 37, in default_ mkdirs
os.makedirs(f)
File "C:\Anaconda\lib\os.py", line 150, in makedirs
makedirs(head, mode)
File "C:\Anaconda\lib\os.py", line 150, in makedirs
makedirs(head, mode)
File "C:\Anaconda\lib\os.py", line 150, in makedirs
makedirs(head, mode)
File "C:\Anaconda\lib\os.py", line 157, in makedirs
mkdir(name, mode)
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 's3:'
Кажется, это связано с необходимостью создавать каталоги локально. Я также попытался добавить параметр mkdirs=os.makedirs
в write()
но я думаю, что этот параметр предназначен для создания каталога в файловой системе, куда будет записан файл, и в s3 я понимаю, что на самом деле нет каталогов. Только ключ, значение хранит.
Сбой на:
OS: Microsoft Windows Server 2008
Python: 2.7
fastparquet: 0.1.3
pandas: 0.18.0
s3fs: 0.1.2
Работает с Centos, той же версией Python и пакетами