我正在尝试从 S3 存储桶将大型 CSV(~5GB)加载到 Pandas 中。
以下是我为 1.4 kb 的小型 CSV 尝试的代码:
client = boto3.client('s3')
obj = client.get_object(Bucket='grocery', Key='stores.csv')
body = obj['Body']
csv_string = body.read().decode('utf-8')
df = pd.read_csv(StringIO(csv_string))
Run Code Online (Sandbox Code Playgroud)
这适用于小型 CSV,但我无法通过此实现将 5GB csv 加载到 Pandas 数据帧的要求(可能是由于 StringIO 加载 csv 时的内存限制)。
我也试过下面的代码
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='bucket', Key='key')
df = pd.read_csv(obj['Body'])
Run Code Online (Sandbox Code Playgroud)
但这给出了以下错误。
ValueError: Invalid file path or buffer object type: <class 'botocore.response.StreamingBody'>
Run Code Online (Sandbox Code Playgroud)
非常感谢解决此错误的任何帮助。
我在 Solr 中实现了一个示例自定义过滤器,并配置了 fieldtype:contentType 以在索引分析阶段使用过滤器,如下所示;
<fieldType name="contentType" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="com.solr.test.analyzer.ContentFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
下面是我的自定义过滤器工厂类:
public class ContentFilterFactory extends TokenFilterFactory {
public ContentFilterFactory() {
super();
}
@Override
public TokenStream create(TokenStream input) {
return new ContentFilter(input);
}
}
Run Code Online (Sandbox Code Playgroud)
启动 Solr 4.5.0 服务器时,加载 ContentFilterFactory 实例时出现以下错误。根本原因是 java.lang.NoSuchMethodException: com.solr.test.analyzer.ContentFilterFactory.(java.util.Map)
我需要在 FilterFactory 中包含一个 init() 方法吗?如果是这样,我应该在其中包含什么?有人可以帮我解决这个错误。
Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] analyzer/filter: Error instantiating class: 'com.solr.test.analyzer.ContentFilterFactory'
at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
at org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:400)
at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:95)
at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:43)
at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
... 14 more
Caused by: …Run Code Online (Sandbox Code Playgroud)