Koalas 数据框随着 Deltalake 的更新而实时更新

时间:2021-07-08 19:31:58

标签: databricks delta-lake spark-koalas

我正在开发一种解决方案,该解决方案使用以下代码通过给定索引更新 delta 湖:

      dataframe = ks.read_table('data')
      subdataframe = dataframe .loc[dataframe ['status']== 1,:]


      for index,column in subdataframe.iterrows():
        
        #get values for a given row
        record= subdataframe.loc[index].to_dict()

        if(record_needs_updating):
          #update deltalake
          dataframe.loc[dataframe['file']==record['file'],'status'] = 0
          dataframe.to_delta('fileloc', partition_cols='pull',mode='overwrite')

          #update databricks table
          spark.sql("DROP TABLE  IF EXISTS data")
          spark.sql("CREATE TABLE data USING DELTA LOCATION fileloc)
          spark.sql("OPTIMIZE data")

我遇到的问题是在 for 循环中尝试索引子数据帧时出现的关键错误。

这似乎是因为数据帧本身在更新 delta 湖后更新为不包含状态 = 0 的任何记录,这意味着索引发生了变化,从而产生了关键错误。

有什么办法可以将子数据帧变成一个不会随着 deltalake 更新而更新的非实时数据帧?

还要注意,我需要在代码运行时进行更新,而不是在所有代码运行后才更新一次。

谢谢!

0 个答案:

没有答案