有人用过这样的BigQuery吗? 我发现了一些奇怪的事情。 这里有两个例子。 例1)
select var1, var2
from table
例2)
select strct(var1, var2) as var
from table
结果是一样的,但在Python中不同。 我不知道为什么df和df2使用不同的内存大小。
问题来源StackOverflow 地址:/questions/59384620/how-to-load-data-use-less-memory-in-bigquery-python
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
BigQuery是Google Cloud Platform的一项服务,用于处理大规模数据集。您提到的情况似乎是关于在Python中使用BigQuery客户端库查询数据时的内存使用问题。虽然我主要基于阿里云的产品知识,但我可以尝试帮助理解可能的原因和解决方案。
在您的例子中,两个SQL查询逻辑上看似相似,但实际上返回的数据结构不同:
例1:
SELECT var1, var2
FROM table
这个查询直接返回了var1
和var2
两列的值,结果通常以扁平化的表格形式存在,每一行对应一个记录,每列一个字段。
例2:
SELECT STRUCT(var1, var2) AS var
FROM table
这个查询将var1
和var2
封装进了一个STRUCT(结构体)类型中,每一行返回的是一个包含var1
和var2
字段的对象。在Python中,这可能会被表示为一个字典或自定义对象列表,每个元素都是一个包含两个键值对的字典。
Python中的内存使用差异:
如何减少内存使用:
pd.Int8Dtype
、pd.NA
等。对于阿里云MaxCompute(原名ODPS),也有类似的考量点。MaxCompute也支持复杂的数据类型和结构,并且其客户端SDK(如PyODPS)在设计上也会考虑到数据处理的效率和内存使用。如果你考虑迁移到阿里云平台,可以探索PyODPS提供的功能来优化你的数据处理流程。