2016-07-08 1 views
1

Json.Net을 사용하여 줄 바꿈 된 새로운 줄을 쓰는 방법을 찾고 있습니다. Google BigQuery로 데이터를 내보낼 수있게하려면이 작업을 수행해야합니다. -줄 바꿈 구분 된 Json 쓰기

현재 내가 찾은 유일한 방법은 내 컬렉션을 반복하고 각 개체를 한 번에 하나씩 나열하는 것입니다. 더 좋은 방법.

나는이 previous question을 통해 들어 왔지만 대답은 줄 바꿈을 읽는 방법을 설명하고 그것을

+0

현재 작동하는 코드가 있다면 무엇을 묻는 중입니까? 당신이 해결하는데 도움이 될 구체적인 문제는 무엇입니까? – dbc

+0

@dbc 더 나은 방법이 있는지 알고 싶습니다. 내 List 컬렉션을 반복하는 대신 Json 시리얼 라이저에 컬렉션을 전달하는 방법이 있는지 알고 싶습니다. 그리고 필요한 방식으로 json을 포맷 할 수 있습니다. –

+0

@JonClarke 리스트 을 줄 바꿈 형식의 JSON으로 포맷/저장할 수 있다면 어떨까요? 현재 우리는 동일한 작업을 반복적으로 수행하고 각각을 C# 개체로 순차적으로 serialize합니다. –

답변

1

를 줄 바꿈으로 구분 된 JSON 같은 건 없다 작성하지 방법, JSON을 구분. JSON 객체를 하나의 별도 라인에 저장하는 것이 좋습니다. 이것은 저장이 방법은 그것이 많은에게 처리를 병렬로 만들기 때문에 사용 등

푸른 스트림 분석, 하이브, 구글의 빅 쿼리 등 많은 빅 데이터 및 이벤트 처리 제품에서 사용되는 쉽게 :

  • 읽을 때 하나의 파일을 실제로 전체 텍스트를 구문 분석하지 않고 행별로 쉽게 분할 할 수 있으며 다른 스레드 나 작업자에게 할당 할 수 있습니다.
  • 전체 텍스트가 구문 분석 될 때까지 기다리지 않고도 독립적으로 행을 처리 할 수 ​​있습니다. 이를 통해 비동기 작업 및/또는 데이터 흐름을 동시에 읽고 읽고 구문을 분석 할 수 있습니다.
  • 쓰는 경우 여러 스레드가 다른 파일에 데이터를 쓸 수 있으며 모든 파일을 단일 파일로 병합 할 수 있습니다. 디스크에 기록하는 경우에도 OS 및 디스크 버퍼링 및 작업 오버 헤드는 sendind X 작업을 동시에 수행하면 X 작업을 순차적으로 실행하는 것보다 빠르게 완료 될 수 있음을 의미합니다.
  • 각 작업자/스레드는 새 레코드를 직접 작성할 수 있습니다. 파서는 파일을 생성하기 위해 모든 레코드에 액세스해야합니다. 이러한 이유로

, 파서가 그것을 지원하는 경우에도, 이러한 파일을 생성하는 파서를 사용하는 것이 좋습니다 하지입니다. 단일 스레드 구현은 너무 느려서 쓰기 전에 모든 레코드를 수집해야합니다.

성능을 향상 시키려면 여러 파일에 기록하는 것이 좋으며 별도의 디스크에 기록하고 끝에 모든 파일을 결합하는 것이 좋습니다. 기록을 작성하기 전에 모든 레코드를로드하기 위해 기다리는 대신 생성 된대로 각 레코드를 쓸 수도 있습니다.

+0

정확히 새 라인으로 구분 된 형식이 있습니다. JSON : http://ndjson.org/ – Koterpillar

+0

@Koterpillar no, 이것은 JSON이 아닌 무언가에 주어진 비공식적 인 이름입니다. 위의 이유로 사용 된 것은 개행 문자로 구분 된 JSON 조각입니다. 링크 된 Github 레포는 사람들이 개행을 사용하기 시작한 후에 길게 만들어졌습니다. 언급 된 유일한 라이브러리는 저자의 것으로, 결코 업데이트되지 않았습니다.그건 형식의 사이트가 아니에요, 그것은 실패한 PR 스턴트입니다. –

+0

@Koterpillar와 법률 적 "spec"은 근본적으로 쓸모가 없습니다. 실제 표준과의 연결 일뿐입니다. 그것은 "구분 기호로 뉴 라인 사용"이라고 말합니다. 그것은 사용되는 것이 아닙니다. 전체 레코드를 분리하는 경우를 제외하고는 뉴 라인을 사용하지 않아야합니다 *. –