>

하이브 테이블이 데이터 프레임으로 캐시 된 다음 스트림 이벤트가 캐시 된 데이터 프레임과 결합되어 결과를 생성하는 SparkStreaming 솔루션을 개발 중입니다.

그러나 문제는 Hive 테이블이 특정 빈도로 업데이트되므로 캐시 된 데이터 프레임도 그에 따라 업데이트되어야한다는 것입니다.

업데이트 된 Hive 테이블 레코드를 사용하여 특정 시간 간격으로 데이터가 자동으로 새로 고쳐지는 캐시 된 데이터 프레임 주변의 TTL 또는 다른 메커니즘이 어떤 식 으로든 말해집니다.


  • 답변 # 1

    개념을 이해하자면 Cache () 함수는 데이터 프레임을 메모리에 저장합니다. 따라서이 데이터 프레임에서 수행 할 추가 작업이 있으면 데이터 프레임을 생성 할 때부터 DAG를 통해 이동하지 않습니다. 데이터를 메모리에 저장할 때이 데이터 프레임에서 다양한 작업을 수행 할 수 있으며 처음에는 저장하는 데 시간이 걸리지 만 추가 작업이 더 빠릅니다. 시나리오에 따라 캐싱없이 스트리밍 플랫폼으로 데이터를 캐시 할 필요가 없습니다. 데이터에 대한 작업을 수행하고 결과를 추가 모드로 HDFS에 저장하십시오. 데이터 프레임을 캐시하면 클러스터 메모리가 필요합니다.

    내 지식에 따라 귀하의 질문에 대해 캐시 된 데이터 프레임을 업데이트하는 TTL 메커니즘이 없습니다. 명시 적으로 데이터를 다시 읽고 캐시해야합니다.

  • 답변 # 2

    사례에 대한 해결 방법이 있습니다. 별도의나사에서 일정 간격 후에 코드를 트리거하여 하나의 크론 작업 또는 일정 작업을 시작합니다. 요구 사항에 따라 설정할 수 있습니다.

    val spark: SparkSession = ???
    spark.sql("refresh table <your table name>")
    
    

관련 자료

  • 이전 python typeerror - 문자열이 아닌 str이어야합니다
  • 다음 nx1 벡터에서 mxn 행렬의 Cuda 곱셈