복붙노트

[HADOOP] Apache에서 데이터 프레임을 캐시하는 방법

HADOOP

Apache에서 데이터 프레임을 캐시하는 방법

spark SQLContext JDBC 연결을 사용하여 RDBMS 데이터를 캐시하는 코드를 작성 중입니다. 데이터 프레임이 생성되면 아파치 점화를 사용하여 다시 재사용하여 다른 응용 프로그램에서 결과 집합을 사용할 수 있도록 캐시하고 싶습니다. 다음은 코드 스 니펫입니다.

object test
{

  def main(args:Array[String])
  {

      val configuration = new Configuration()
      val config="src/main/scala/config.xml"

      val sparkConf = new SparkConf().setAppName("test").setMaster("local[*]")
      val sc=new SparkContext(sparkConf)
      val sqlContext = new org.apache.spark.sql.SQLContext(sc)
      val sql_dump1=sqlContext.read.format("jdbc").option("url", "jdbc URL").option("driver", "com.mysql.jdbc.Driver").option("dbtable", mysql_table_statement).option("user", "username").option("password", "pass").load()

      val ic = new IgniteContext[Integer, Integer](sc, config)

      val sharedrdd = ic.fromCache("hbase_metadata")

      //How to cache sql_dump1 dataframe

  }
}

이제 질문은 데이터 프레임을 캐시하는 방법입니다. IgniteRDD에는 savepairs 메서드가 있지만 RDD [Integer]로 키와 값을 허용하지만 RDD로 변환하더라도 데이터 프레임이 있습니다. RDD [Row] 만 가져옵니다. Integer의 RDD로 구성된 savepairs 방법은 값으로 RDD 문자열이 있으면 어떻게됩니까? 결과 집합을 캐시하기 위해 데이터 프레임 또는 다른 더 나은 방법을 캐시하는 것이 좋습니다.

해결법

  1. ==============================

    1.DataFrame을 Ignite 캐시 (공유 RDD)에 저장하는 이유는 그다지 이점이 없기 때문에 최소한 DataFrame을 통해 Ignite SQL을 실행할 수는 없습니다.

    DataFrame을 Ignite 캐시 (공유 RDD)에 저장하는 이유는 그다지 이점이 없기 때문에 최소한 DataFrame을 통해 Ignite SQL을 실행할 수는 없습니다.

    다음을 수행하는 것이 좋습니다.

    또는 IgniteRDD.savePairs 메소드를 사용하여 sql_dump1을 얻고 각 행을 반복하고 각 행을 공유 RDD에 개별적으로 저장할 수 있습니다. 이 작업이 완료되면 위에서 언급 한 것과 동일한 Ignite Shared RDD SQL을 사용하여 데이터를 쿼리 할 수 ​​있습니다.

  2. from https://stackoverflow.com/questions/37180715/how-to-cache-dataframe-in-apache-ignite by cc-by-sa and MIT license