您好,有人使用pyspark将hana数据卸载到hive中吗??我面临巨大数据的内存问题。plz建议

您好,有人使用pyspark将hana数据卸载到hive中吗??我面临巨大数据的内存问题。plz建议,pyspark,hana,Pyspark,Hana,有人使用pyspark将hana数据卸载到hive中吗??我面临巨大数据的内存问题。请允许我建议。我尝试了更小的数据集,它是有效的。在很大程度上,它给了JDBCDriverException:无法分配足够的内存。我正在使用sapJDBC驱动程序进行连接 查询=从hana表中选择列 jdbcDF = spark.read.format("jdbc").option("driver", driver).option("url", url).

有人使用pyspark将hana数据卸载到hive中吗??我面临巨大数据的内存问题。请允许我建议。我尝试了更小的数据集,它是有效的。在很大程度上,它给了JDBCDriverException:无法分配足够的内存。我正在使用sapJDBC驱动程序进行连接

查询=从hana表中选择列

jdbcDF = spark.read.format("jdbc").option("driver", driver).option("url", url).option("dbtable", query).option("user", username).option("password", password).load()

jdbcDF.write.insertInto("hive_test" + """.""" + "hive_ratings_table")

eaxct错误表示com.sap.db.jdbc.jdbc驱动程序异常:无法分配足够的内存。
我的日程安排是,我必须将一个包含252列的表的186百万条记录卸载到hive表中。我是用pyspark代码做的。它不允许我一次拿走所有的东西。最多只允许1300万。我正在使用下面的pyspark代码

query=“”从tbalename中选择* 从HANA表中读取 jdbcDF=spark.read.format(“jdbc”).option(“driver”,driver)。option(“url”,url)。option(“dbtable”,query)。option(“user”,username)。option(“password”,password)。load()

写入配置单元表 jdbcDF.write.insertInto(“配置单元测试”+“”“+”配置单元评级表”)


数据量为1.86亿,要进入pyspark shell,我使用的是executor memory 80G、driver memory 10G、num executors 5、cores 5。

虽然有关HANA实例大小的信息仍然缺失,但来自HANA JDBC驱动程序的错误消息表明HANA确实无法分配足够的内存

当HANA实例用于保存/处理的数据超过HANA服务器的RAM所允许的数量时,这是一个常见问题。这里简单的解决方法是一次将较少的数据加载到内存中,或者增加HANA DB的可用内存。由于HANA是内存数据库,因此当前处理的所有数据都需要放入内存

这并不意味着所有数据都必须始终在内存中,但当您想要读取一个包含所有列的大型表,以便有效地进行数据转储时,可用内存需要支持这一点

“数据转储”特别占用内存,因为HANA必须“具体化”所有记录,这实际上意味着解压缩数据。只要您在HANA中处理数据,通常不需要这样做

这给您留下了两个选择:

  • 增加服务器内存
  • 批量转储/加载数据
  • 使用CSV导出选项(
    export
    命令-仅当您有权访问HANA服务器文件系统时才可用)
  • 直接在HANA中执行分析,根本不导出数据

  • 请提供准确的错误消息,包括所有详细信息。另外,请更详细地描述场景的设置。如何访问“蜂巢”表?通过HANA SDA/SDI还是通过python程序?您的系统的“巨大”数据集是什么(HANA实例内存有多大)?好的,您添加了附加信息作为答案。这相当令人困惑。我建议删除这些“答案”,并用附加信息编辑您的原始问题。