28.2.17

SAP HANA Vora 1.3 새로운 분석 엔진

SAP Hana Vora 1.3 2016 12월에 발표되었습니다. 이전 버전보다 가지 주요 개선 사항이 포함되어 있습니다. 여기에 대한 모든 것을 읽을 있습니다. 기능 하나 (특수 분석 엔진의 도입) 자세히 설명하고 싶습니다.
Hadoop 주요 이점 하나는 데이터 호수에 모든 유형의 데이터 (구조화, 구조화 비구조화) 저장하는 기능입니다. 예를 들어 IoT 애플리케이션에서 스트리밍 시계열 데이터를 고객의 사이트 애플리케이션에서 수집 로그 클릭 스트림 데이터와 함께 모바일 애플리케이션의 사용자 프로필, 요청 사용 데이터와 함께 저장할 있습니다.
모든 데이터가 수집되는 이유는 무엇입니까? 가지 이유가 있습니다. 경우에 따라 규정 법적 요구 사항을 준수해야하는 경우에 데이터를 보관해야하는 경우가 있으며, 경우에 따라 특정 목적 ( : 기계 학습 또는 보안 추적) 대해 수집되고, 다른 경우에는 알려지지 않은 미래의 목적을 위해 수집됩니다. 데이터를 저장하는 방법을 선택할 때까지 데이터를 저장하기로 선택하는 기업입니다. 문제는 법적 요청에 따라 실제로 데이터를 쿼리하거나 트렌드를 찾거나 문제를 해결하거나 알고리즘을 테스트하거나 데이터에서 일부 값을 유도하려고 데이터를 탐색하는 시간이 되면 발생합니다. 기업은 유형의 데이터를 분석 있는 중요한 IT 투자 학습 곡선에 직면 있습니다. 대부분의 경우이 분석을 수행하는 필요한 기술은 별도의 하드웨어, 서로 다른 세트 (설치 구성 있는 라이브러리 서비스, 다른 OS 버전을 지원하는 경우가 있음) 필요합니다. 모든 것이 IT 그룹이 설정하는 악몽입니다 인프라 관점에서 관리 클라우드 서비스를 사용하더라도 다른 클라이언트 도구 프로그래밍 언어는 개발 팀에서 새롭고 중요한 학습 곡선을 많이 필요로 합니다.
이것은 새로운 Vora 분석 엔진이 들어오는 곳입니다. Vora 1.3 새로운 주요 기능인 다양한 데이터 분석 엔진을 도입하여 IT 그룹의 관리 요구 사항이나 개발자의 프로그래밍 지식을 기하 급수적으로 늘리지 않고도 Vora 수집하고 분석 수있는 데이터 호수의 데이터 범위를 확장 있습니다 . 엔진은 모두 Vora 서비스로 실행되며 기존 Hadoop Spark 인프라에 배포 있으며 모든 엔진은 가장 일반적인 데이터 쿼리 언어 SQL 통해 액세스됩니다.
또한 모든 엔진이 배포된다는 점에 유의해야합니다. 데이터를 로드하고 분석하는 필요한 리소스를 제공하는 필요한 만큼의 노드에서 엔진을 실행할 있으며 노드를 통해 데이터를 분할하는 방식을 정의 있습니다. Vora 트랜잭션 조정자는 쿼리가 올바른 노드에 도착하도록 보장하는 분산 쿼리 처리 기능을 제공하며 쿼리에서 완전한 결과 집합이 반환됩니다.

새로운 엔진과 관련된 Vora 기본 아키텍처는 다음과 같습니다.


, 클러스터의 노드에 사용할 엔진 서비스를 배포하고 기존의 메모리 관계형 엔진과 동일한 Vora 액세스 계층을 통해 액세스하십시오. Vora 분산 처리 계층은 쿼리 라우팅, 결과 수집 및이를 클라이언트로 다시 보냅니다.

릴리스에는 4 개의 새로운 엔진이 도입되었습니다.

Time Series Engine


시계열 엔진은 시계열 데이터에 대한 특정 처리 기능을 제공합니다. 데이터는 정기적 시간 간격으로 측정됩니다. 엔진은 시간 간격이 간격이 아니어도 동일한 시간 간격으로 가져온 경우에도 상당한 메모리 데이터 압축을 제공하므로 예상보다 훨씬 많은 원시 시계열 데이터를 분석 있습니다. 또한 시계열 엔진은 데이터의 상관 관계 추세, 계열을 채우거나 외삽하는 근사값, 그룹 계수 값을 조사하고 시계열 측정의 세분성을 변경하는 특수 기능을 제공합니다.

시계열 엔진을 사용하려면 Vora Manager 서비스를 사용하여 클러스터의 하나 이상의 노드에 배포하십시오. 일단 배치되면, 당신은 당신이 좋아하는 개발자를 통해 SQL 사용하여 액세스 있습니다. 도구를 사용하여 파티션을 만들고 시계열 테이블을 정의하십시오. Vora 개발자 가이드 (https://help.sap.com/hana_vora)에서 구문에 대한 자세한 내용을 읽을 있지만 미리 정의 파티션 규칙을 사용하여 ORC 형식의 파일에서 시계열 테이블을 만드는 예가 있습니다 , 명시 적으로 선언 계열 정의가 있습니다.

CREATE TABLE my_ts_table (
    ts TIMESTAMP,
    measure double,
    comment varchar(1024)
)
SERIES ( PERIOD FOR SERIES ts START TIMESTAMP '2015-01-01 00:00:00'
        END TIMESTAMP '2016-01-01 00:00:00'
EQUIDISTANT INCREMENT BY 30 MINUTE DEFAULT COMPRESSION use (APCA error 3.0 percent)
    compression on (measure) use (SDT error 5.0 percent) )
PARTITION BY PS1( ts )
USING com.sap.spark.engines
OPTIONS (
    files "/user/hdfsuser /data.orc",
    format “orc”,
    storagebackend "hdfs"
)

생성 후에는 표준 SQL 우리가 제공하는 시계열 관련 함수를 사용하여 테이블에 자유롭게 액세스 있습니다. 그러나이 시점에서 시계열 엔진은 Spark SQL 완전히 통합되지 않으므로 문장을 실행하려면 원시 데이터 소스로 액세스해야합니다. 이것은 단순히 시계열 엔진에 대해 실행하는 모든 문장을 따옴표 (`, ascii 0x60) 묶어야한다는 것을 의미합니다. 예를 들어, select 문은 spark 셸에서 실행할 있습니다.

import org.apache.spark.sql._
val sqlContext = new SapSQLContext( sc )
sqlContext.sql("""``SELECT TREND(measure)
     | FROM my_ts_table
     | WHERE PERIOD BETWEEN TIMESTAMP '2015-01-01 00:00:00'
     |     AND TIMESTAMP '2016-01-01 00:00:00'``
     | USING com.sap.spark.engines""".stripMargin).show()

Graph Engine


그래프 엔진은 엔티티 간의 관계를 검사하고 분석하는 분석 기능을 제공합니다. 그래프 분석에 사용되는 데이터 유형의 예로는 네트워크 토폴로지, 소셜 네트워크 지식 그래프가 있습니다. 그래프 엔진이 제공하는 일반적인 그래프 분석 기능에는 노드의 정도 (노드의 연결 ), 노드 간의 (최단) 거리 노드의 연결 여부가 포함됩니다.

시계열 엔진과 마찬가지로 그래프 엔진 서비스를 클러스터의 하나 이상의 노드에 배포 다음 SQL 사용하여 액세스합니다. 예를 들어, 다음은 테이블 생성 방법입니다 (구문에 대한 자세한 내용은 Vora 개발자 가이드에서 찾을 있습니다).

CREATE GRAPH MOVIES PARTITION BY PS1(NODEID)
    USING com.sap.spark.engines
    OPTIONS (
        files "/user/<duser>/movies.jsg",
        storagebackend "hdfs")

시계열과 마찬가지로 그래프 엔진은 Spark SQL 완전히 통합되어 있지 않으므로 원시 SQL 구문을 사용하여 액세스해야 합니다. 또한 Vora 1.3에서는 그래프 엔진이 그래프 데이터를 로드 있도록 JSG 형식으로 제공되어야 합니다 (JSG 그래프 데이터를 설명하기위한 일반적인 구조 JSON 기반 파일 형식 ). 다음은 스파크 셸에서 실행될 수있는 샘플 쿼리입니다.

import org.apache.spark.sql._
val sqlContext = new SapSQLContext( sc )
sqlContext.sql("``SELECT DEGREE(A) FROM ACTOR A USING GRAPH MOVIES``
     | USING com.sap.spark.engines").show()

Document Store Engine


문서 저장 엔진은 JSON 문서를 콜렉션 인메모리에 저장하고 데이터에 대한 SQL 기반 분석을 제공합니다. JSON 문서는 일반적으로 구조화되어 있습니다. , 문서의 레코드에는 서로 다른 필드 집합이 포함될 있습니다. 로딩되면 표준 SQL 사용하여 데이터를 쿼리하고 관계형 또는 json 형식의 결과 집합을 반환 있습니다. 추가 조항 'IS MISSING' 사용하면 문서에서 필드가 누락 문서를 검색 있습니다. 또한 중첩 도트 표기법을 사용하여 문서의 필드를 참조하고 대괄호 표기법을 사용하여 JSON 문서 내의 배열에 액세스 있습니다.

예를 들어, 다음은 문서 저장 엔진에서 스키마를 만드는 방법입니다.

CREATE COLLECTION t
PARTITION BY PS2("state")
USING com.sap.spark.engines
OPTIONS (files 'mydata.json')

보다 전통적인 SQL / RDBMS 사용자의 경우, 스키마를 가변적으로 사용하는 표로서 느슨하게 컬렉션을 생각할 있으며, JSON 문서를 해당 테이블의 행으로 간주 있습니다. 문서의 필드는 열을 나타냅니다. 이전 2 엔진과 마찬가지로 원시 SQL 사용하여 문서 저장소 엔진에 액세스합니다. 다음은 표준 SQL 결과 세트 형식으로 검색하는 경우 조회가 표시되는 내용입니다. 문서의 어느 부분이 비교되는지를 지정하는 도움이 되는 표기법과 배열 표시기가 where 절에 있음을 확인하십시오.

import org.apache.spark.sql._
val sqlContext = new SapSQLContext( sc )
sqlContext.sql("``SELECT ct as city, population as pop FROM <collection>
    |        WHERE employeecollection.address[1].street = ‘Maple’
    |            OR author.address IS MISSING``
    | USING com.sap.spark.engines").show()

이렇게 하면 필드에 대한 열과 컬렉션의 문서에 대한 행이 있는 표준 SQL 결과 집합이 생성됩니다. SQL 결과 집합 대신 JSON 문서를 반환하려면 다음과 같이 선택 목록을 변경하기 만하면 됩니다.

sqlContext.sql ( ""{ "ct": "city", "population": "pop"} ...

JSON 문서는 단일 , 단일 varchar 필드로 반환됩니다.

Disk engine


디스크 엔진은 사용 가능한 메모리가 충분하지 않을 데이터를 분석 있는 대체 방법을 제공합니다. 데이터를 처리하고 Vora 분산 쿼리 처리 시스템에 데이터를 통합하는 디스크 엔진에 데이터를 로드 있습니다. 이렇게 하면 Vora 사용하여 데이터를 분석하고, 필요한 경우 다른 엔진과 결과를 조인하고, 좋은 쿼리 성능을 보장 있습니다. 디스크 엔진은 Spark SQL 완전히 통합되어 있으며 메모리 관계형 테이블과 동일한 방식으로 액세스 있습니다.

Cross Engine Querying


환경을 훨씬 강력하게 만드는 이유는 서로 다른 엔진의 쿼리 결과를 결합하여보다 포괄적 분석을 제공하고 새로운 통찰력을 생성 있다는 사실입니다.

예를 들어, 다음은 메모리 관계형 엔진의 테이블과 시계열 엔진의 테이블을 결합하는 방법의 예입니다.

SELECT * FROM
        (``select "state_id", trend(measure) from time_series_table order by "_id" asc ``
              USING com.sap.spark.engines) S1,
        (select state_id, state_name from region ) S2
WHERE S2.state_id = S1.state_id AND S2.state_name = 'MA'

다른 분석 엔진의 결과 집합을 조인하는 외에도 특정 엔진에서 아직 지원되지 않는 내장 함수에 대한 요구 사항이 발생하면 다른 엔진을 사용하여 해당 기능을 제공 있습니다. 예를 들어, 시계열 엔진은 concat () 함수를 지원하지 않으므로 이를 사용하기 위해 시계열 쿼리를 표준 Spark SQL 쿼리와 결합하여 원하는 결과 세트를 얻습니다.

SELECT concat( cast(BIN_START as char(8)), ' TO ', cast(BIN_END as char(8)) ) as BIN_ID,
        FREQUENCY
FROM (``SELECT * FROM HISTOGRAM ( SERIES ts_series, 5, DESCRIPTOR( ts_measure ) ) HIST``
            USING com.sap.spark.engines) AS T1

결론적으로, 새로운 Vora 1.3 분석 엔진은 SQL 사용하여 통일 쿼리 환경에서 많은 새로운 유형의 데이터를 분석하고, IT 투자 개발자 교육을 크게 필요로 하지 않고 데이터 분석을 통한 깊이 있는 분석과 새로운 통찰력을 제공합니다.

No comments:

Post a Comment