你好,有人用pyspark把hana数据卸载到hive中吗??我面临着巨大数据的内存问题.plz建议



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

query=从hana表中选择col

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")

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

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

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

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

这给你留下了几个选择:

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

eaxct错误显示com.sap.db.jdbc.JDBCDriver异常:无法分配足够的内存。我的计划是,我必须将一个有252列的表的1.86亿条记录卸载到配置单元表中。我使用pyspark代码。它不允许我一次拿走所有东西。最多只允许1300万。

我使用的是下面的pyspark代码

query="quot;从tbalename中选择*"quot;从HANA表读取jdbcDF=spark.read.format

写入配置单元表jdbcDF.write.insertInto("hive_test"+"."+"hive_ratings_table"(

数据量为1.86亿,要进入pyspark shell,我使用的是执行器内存80G,驱动程序内存10G,num个执行器5,核心5。