Luigi LocalTarget 二进制文件
Luigi LocalTarget binary file
我无法在项目的 Luigi 管道中编写二进制文件 LocalTarget
。我在这里隔离了问题:
class LuigiTest(luigi.Task):
def output(self):
return luigi.LocalTarget('test.npz')
def run(self):
with self.output().open('wb') as fout:
np.savez_compressed(fout, array=np.asarray([1, 2, 3]))
我尝试以 'w'
和 'wb'
打开,但我不断收到以下错误:
TypeError: write() argument must be str, not bytes
我正在使用 python 3.5.1,我的 luigi 版本是 2.1.1
问题出在 LocalTarget
的格式上。将其更改为:
return luigi.LocalTarget('test.npz', format=luigi.format.Nop)
解决了问题。但是文档中没有关于此的内容。
它解决了我在 Hadoop 中编写 parquet 文件的问题。 format=luigi.format.Nop
成功了。谢谢!
import luigi
import pandas as pd
import luigi.contrib.hdfs as hdfs
class Hdfs(luigi.Task):
"""
Writes files into output.
"""
def __init__(self, *args, **kwargs):
super(Hdfs, self).__init__( *args, **kwargs)
def output(self):
fname_template = f'/data/some_directory/test_luigi.parq'
return luigi.contrib.hdfs.HdfsTarget(fname_template, format=luigi.format.Nop)
def run(self):
with self.output().open('w') as f:
print(f.path)
d = pd.DataFrame({'sim_id':[1,2,3]})
d.to_parquet(f)
我无法在项目的 Luigi 管道中编写二进制文件 LocalTarget
。我在这里隔离了问题:
class LuigiTest(luigi.Task):
def output(self):
return luigi.LocalTarget('test.npz')
def run(self):
with self.output().open('wb') as fout:
np.savez_compressed(fout, array=np.asarray([1, 2, 3]))
我尝试以 'w'
和 'wb'
打开,但我不断收到以下错误:
TypeError: write() argument must be str, not bytes
我正在使用 python 3.5.1,我的 luigi 版本是 2.1.1
问题出在 LocalTarget
的格式上。将其更改为:
return luigi.LocalTarget('test.npz', format=luigi.format.Nop)
解决了问题。但是文档中没有关于此的内容。
它解决了我在 Hadoop 中编写 parquet 文件的问题。 format=luigi.format.Nop
成功了。谢谢!
import luigi
import pandas as pd
import luigi.contrib.hdfs as hdfs
class Hdfs(luigi.Task):
"""
Writes files into output.
"""
def __init__(self, *args, **kwargs):
super(Hdfs, self).__init__( *args, **kwargs)
def output(self):
fname_template = f'/data/some_directory/test_luigi.parq'
return luigi.contrib.hdfs.HdfsTarget(fname_template, format=luigi.format.Nop)
def run(self):
with self.output().open('w') as f:
print(f.path)
d = pd.DataFrame({'sim_id':[1,2,3]})
d.to_parquet(f)