Spark DataFrames可以作为值存储在HashMap中,以后可以访问吗?

时间:2016-12-05 12:28:28

标签: scala apache-spark apache-spark-sql phoenix

我是Spark / Scala的新手。我想在以下场景中使用Spark -

  • 有一个输入交易表
  • 参考或查询表

所有表都存储在HBASE中,并通过Phoenix jdbc驱动程序在Spark中访问。

查找表可以分组为主要查找表,其他主表可以决定处理输入事务表可能需要哪些其他查找表。

我在主查找表上创建一个DataFrame,识别需要加载的剩余查找表,如下所示 -

DECLARE 

  XMLDATA VARCHAR2(200);

  P_YEAR_ID NUMBER;

  USER_ID NUMBER;

  ERROR_MSG NVARCHAR2(200);

BEGIN

  XMLDATA := NULL;

  P_YEAR_ID := NULL;

  USER_ID := NULL;

  PK_ADMIN.P_SAVE_ROLLUP_LPF_FAC(

    XMLDATA => XMLDATA,

    P_YEAR_ID => P_YEAR_ID,

    USER_ID => USER_ID,

    ERROR_MSG => ERROR_MSG

  );



     :ERROR_MSG := ERROR_MSG;
    --rollback; 

END;

因此tableColumns看起来像[LookUpTable1-> [Col1,Col2],LookUpTable4-> [Col11]]。

接下来,我迭代这个列表并尝试为剩余的查找表创建DataFrames并将它们存储在HashMap(Mutable)中,这里是代码 -

PROCEDURE P_SAVE_ROLLUP_LPF_FAC(xmlData IN VARCHAR2,p_year_id number,user_id 

number,error_msg OUT nocopy NVARCHAR2) AS

  X SYS.XMLTYPE;

    NEW_BU_ID NUMBER;

  BEGIN

    X := sys.xmltype.createXML(xmlData);

    BEGIN     

      //Here is the logic for processing of the XML

  END;

但是在此循环之后,如果我尝试从 lookupDFs 访问数据帧,它会立即抛出Null指针异常。

但是,如果我改变Collection以存储String文字而不是DataFrame,那么我根本不会遇到任何问题。我在这里缺少什么?

如果需要任何其他信息,请告诉我,我使用的是Spark 1.6.2,Phoenix 4.4.0,HBase 1.1.x

0 个答案:

没有答案