'Programming'에 해당되는 글 68건

 

원하는 날짜 포맷(yyyyMMdd,yyyyMMddHH 등)을 입력하여 현재날짜를 출력합니다.

  public static String getCurrent(String format) {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    return sdf.format(Calendar.getInstance().getTimeInMillis());
  }

 

 

댓글을 달아 주세요

 

ex) 현재 위치에서 aa로 시작하는 파일 모두 찾기 

find . -name 'aa*' -print

 

 

댓글을 달아 주세요

beeline
!connect jdbc:hive2://server-host-name:10000 user user

'Programming > Hive' 카테고리의 다른 글

[Hive] beeline 접속 명령어  (0) 2019.07.05
[Hive] 테이블 스키마 컬럼 추가 방법  (0) 2019.07.05
[Hive] parquet 압축 설정  (0) 2019.05.29
[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16

댓글을 달아 주세요

-1번 namenode를 Active로 절체하고자 할 때 

hdfs haadmin -failover nn2 nn1

댓글을 달아 주세요

리눅스에 익숙하지 않을 때 많이하는 실수로 윈도우에서 작업한 텍스트를 리눅스로 업로드 후 사용하면 사용이 안됩니다. 예를들어 쉘 파일을 윈도우에서 작업 후 리눅스에서 실행하려고 하면 에러가 발생하는데 리눅스 사용 초기에 한참 고생을 했네요. ㅠㅠ

 

vi로 파일 열어서 아래 명령어 실행하면 됩니다.

:se ff=unix

 

댓글을 달아 주세요

이 방법은 테이블 스키마 마지막에 컬럼을 추가할때만 사용됩니다.

 

ALTER TABLE db_nm.tb_nm ADD COLUMS (`col10` STRING COMMENT '10번째 컬럼', `col11` STRING);

 

'Programming > Hive' 카테고리의 다른 글

[Hive] beeline 접속 명령어  (0) 2019.07.05
[Hive] 테이블 스키마 컬럼 추가 방법  (0) 2019.07.05
[Hive] parquet 압축 설정  (0) 2019.05.29
[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16

댓글을 달아 주세요

 

아래 사이트 참고하여 작성한 코드입니다.

 

정렬알고리즘(sorting algorithm) 정리

1.버블정렬(Bubble sort)

medium.com

	public static void main(String[] args) {
		int arr[] = {41,34,6,16,38,36,28,19,45,43,49};
		for (int i : mergeSort(arr)){
			System.out.print(i +" ");
		}
	}
	
	/**
 	* 버블정렬
 	*  
 	*/
	public static int[] bubbleSort(int[] arr){
		for(int i=arr.length-1; i>0; i--){
			for(int j=0; j<i; j++){
				if (arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		return arr;
	}
		
	/**
 	* 선택정렬
 	*  
 	*/
	public static int[] selectionSort(int[] arr){
		for(int i=0; i<arr.length; i++){
			int min = arr[i];
			for(int j=i+1; j<arr.length; j++){
				if(min > arr[j]){
					min = arr[j];
					arr[j] = arr[i];
					arr[i] = min;
				}
			}
		}
		return arr;
	}
		
	/**
 	* 삽입정렬
 	*  
 	*/
	public static int[] insertionSort(int[] arr){
		for(int i=1; i<arr.length; i++){
			for(int j=i; j>0; j--){
				if(arr[j] < arr[j-1]){
					int tmp = arr[j];
					arr[j] = arr[j-1];
					arr[j-1] = tmp;
				}
			}
		}
		return arr;
	}
		
	/**
 	* 병합정렬
 	*  
 	*/
	public static int[] mergeSort(int[] arr){
		System.out.println("before");
		for(int i : arr){
			System.out.print(i + " ");
		}		
		System.out.println();
		
		if (arr.length < 2){
			return arr;
		}
		
		int mid = arr.length / 2;
		int[] leftArr = mergeSort(Arrays.copyOfRange(arr, 0, mid));
		int[] rightArr = mergeSort(Arrays.copyOfRange(arr, mid, arr.length));
		int[] mergedArr = new int[arr.length];
		int m = 0, l = 0, r = 0;
		while (l < leftArr.length && r < rightArr.length) {
			if (leftArr[l] < rightArr[r]) {
				mergedArr[m++] = leftArr[l++];
			} else {
				mergedArr[m++] = rightArr[r++];
			}
		}
		while (l < leftArr.length) {
			mergedArr[m++] = leftArr[l++];
		}
		while (r < rightArr.length) {
			mergedArr[m++] = rightArr[r++];
		}
		System.out.println("after");
		for(int i : mergedArr){
			System.out.print(i + " ");
		}		
		System.out.println();
		return mergedArr;
	}

 

 

댓글을 달아 주세요

DataNode 추가

1. NameNode의 hosts 파일에 추가할 DataNode IP,HOST 추가

vi /etc/hosts

2. NameNode의 includes 파일을 생성 또는 편집하여 추가할 node의 hostname을 추가

vi /hadoop설치경로/etc/hadoop/dfs.hosts

3. 추가한 서버 접속 후 노드 실행

hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager

4. Namonde 서버에서 node refresh 명령 수행

hdfs dfsadmin -refreshNodes

 

DataNode 제거

1. NameNode의 dfs.hosts.exclude 파일을 생성 또는 편집하여 추가할 node의 hostname을 추가

vi /hadoop설치경로/etc/hadoop/dfs.hosts.exclude

2. Namonde 서버에서 node refresh 명령 수행

hdfs dfsadmin -refreshNodes

3. NameNode web으로 접속하여 node decommissioned가 완료되면 NameNode의 excludes 파일을 열어 제거할 node의 hostname을 삭제한다.

 

댓글을 달아 주세요

 

 

	private static boolean isBlank(String str) {
		int strLen; if (str == null || (strLen = str.length()) == 0) {
			return true; 
		} 
		for (int i = 0; i < strLen; i++) {
			if ((!Character.isWhitespace(str.charAt(i)))) {
				return false; 
			} 
		} 
		return true; 
	}

 

 

댓글을 달아 주세요

 

휴대폰 번호를 asterisk(*)로 암호화하는 코드입니다.

	/**
	 * encrypt number in text
	 * 
	 * maskingCallNumber
	 *  
	 * @param str
	 * @return String
	 */
	public static String maskingCallNumber(String str){
		String replaceString = str;
		String matchedStr ="";

		String pattern ="(\\d{2,3})-?(\\d{3,4})-?(\\d{3,4})";
		Matcher matcher = Pattern.compile(pattern).matcher(str);

		if(matcher.find()){
			StringBuffer br = new StringBuffer();
			for(int i = 1 ; i<=matcher.groupCount(); i++){
				matchedStr = matcher.group(i);
				for(int j = 0 ; j <matchedStr.length();j++){
					br.append("*");
				}
				if(i !=matcher.groupCount()){
					br.append("-");
				}
			}
			replaceString =matcher.replaceAll(br.toString());
		}
		return replaceString;
	}

 

 

댓글을 달아 주세요

 

이름을 asterisk(*)로 암호화하는 코드입니다.

	/**
	 * maskingName
	 *  
	 * @param str
	 * @return String
	 */
	public static String maskingName(String str) {
		String replaceString = str;

		String pattern = "";
		if(str.length() == 2) {
			pattern = "^(.)(.+)$";
		} else {
			pattern = "^(.)(.+)(.)$";
		}

		Matcher matcher = Pattern.compile(pattern).matcher(str);

		if(matcher.matches()) {
			replaceString = "";

			for(int i=1;i<=matcher.groupCount();i++) {
				String replaceTarget = matcher.group(i);
				if(i == 2) {
					char[] c = new char[replaceTarget.length()];
					Arrays.fill(c, '*');

					replaceString = replaceString + String.valueOf(c);
				} else {
					replaceString = replaceString + replaceTarget;
				}

			}
		}
		return replaceString;
	}

 

 

댓글을 달아 주세요

 

 

   /**
    * 날짜 더하기
    * 
    * @param dataeFormat yyyyMMdd ..
    * @param strDate 20190612 ..
    * @param dateUnit DATE or HOUR
    * @param addDate 1, -1 ...
    * @return
    */
   public static String dateAdd(String dataeFormat, String strDate, String dateUnit, int addDate) {
       DateFormat dateFormat = null;
       Date date = new Date();
       
       try {
           dateFormat = new SimpleDateFormat(dataeFormat);
           date = dateFormat.parse(strDate);
       } catch (ParseException e) {
    	   EDWLogger.error(CommonUtil.class, e.getMessage());
       }
       
       Calendar cal = Calendar.getInstance();
       cal.setTime(date);
       if ("DATE".equals(dateUnit)) {
           cal.add(Calendar.DATE, addDate);
       } else if ("HOUR".endsWith(dateUnit)) {
           cal.add(Calendar.HOUR, addDate);
       } 
       return dateFormat.format(cal.getTime());
   }

 

 

댓글을 달아 주세요

 

두가지 방식 있습니다. 상황에 따라 사용하시면 되겠습니다.

 

1.

String command = "ls";
new ProcessBuilder("/bin/bash", "-c", command).start();

2.

    /**
     * cmd 명령어 실행
     *
     * @param cmd
     */
    public static boolean executeCmd(String cmd) {
        Process process = null;
        Runtime runtime = Runtime.getRuntime();
        StringBuffer successOutput = new StringBuffer();
        StringBuffer errorOutput = new StringBuffer();
        BufferedReader successBufferReader = null;
        BufferedReader errorBufferReader = null;
        String msg = null;
        boolean result = false;
 
        List<String> cmdList = new ArrayList<String>();
 
        cmdList.add("/bin/sh");
        cmdList.add("-c");
        
        cmdList.add(cmd);
        String[] array = cmdList.toArray(new String[cmdList.size()]);
 
        try {
        	Logger.info(CommonUtil.class, "cmd : " + cmd);
            process = runtime.exec(array);
 
            successBufferReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "EUC-KR"));
 
            while ((msg = successBufferReader.readLine()) != null) {
                successOutput.append(msg + System.getProperty("line.separator"));
            }
 
            errorBufferReader = new BufferedReader(new InputStreamReader(process.getErrorStream(), "EUC-KR"));
            while ((msg = errorBufferReader.readLine()) != null) {
                errorOutput.append(msg + System.getProperty("line.separator"));
            }
 
            process.waitFor();
 
            if (process.exitValue() == 0) {
                result = true;
            } else {
                Logger.error(CommonUtil.class, "abnormal finish error : " + successOutput.toString());
            }
 
            if (isNotBlank(errorOutput.toString())) {
                Logger.error(CommonUtil.class, "error : " + successOutput.toString());
            }
 
        } catch (IOException e) {
            Logger.error(CommonUtil.class, e.getMessage());
        } catch (InterruptedException e) {
            Logger.error(CommonUtil.class, e.getMessage());
        } finally {
            try {
                process.destroy();
                if (successBufferReader != null) successBufferReader.close();
                if (errorBufferReader != null) errorBufferReader.close();

            } catch (IOException e1) {
                Logger.error(CommonUtil.class, e1.getMessage());
            }
        }
        return result;
    }

댓글을 달아 주세요

 

비슷한 규칙에 파일명 동시에 일괄 변경하는 방법입니다.

rename '공통내용' '변경할 공통내용' '변경대상'

ex) rename .txt test.txt *  

 

 

댓글을 달아 주세요

 

자바 date(날짜) 포맷 별 정규식입니다.

public static final String YYYYMMDD = "(19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])";
public static final String YYYYMMDDHH = "(19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])(0[0-9]|1[0-9]|2[0-3])";
public static final String YYYYMMDDHHMI = "(19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])";
public static final String YYYYMMDDHHMISS = "(19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])";
public static final String HH= "(0[0-9]|1[0-9]|2[0-3])";
public static final String MMDD = "(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])";
public static final String HHMI = "(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])";

 

*정규식 해석 (ex : yyyyMMdd)

 - (19|20) :  19 또는 20로 year 앞 2자 표현

 - \\d{2} : 2자리 숫자(00~99 까지) year 뒤 2자 표현

 - (0[1-9]|1[012]) : 0과 1~9에서 1개 또는 1과 012에서 1개로 month 2자 표현

 - (0[1-9]|[12][0-9]|3[01]) : 0과 1~9 또는 1,2와 0~9 또는 3과 0,1로 day 2자 표현

 

 

 

- 위 정규식 사용하여 문자열에서 특정 패턴의 date 검출하는 방법

2016/06/20 - [Programming/JAVA] - [JAVA] 문자열에서 date 특정 패턴 가져오기

 

 

댓글을 달아 주세요

 

이클립스로 java, jar 파일 생성하여 리눅스상에서 java, jar 파일 실행하는 방법입니다.

자바코드는 메인함수로 입력되는 값을 출력하는 간단한 코드로 작성했습니다.

 

public class test{
  public static void main(String[] args){
    for(String arg:args){
      System.out.println(arg);
    }
  }
}

 

1. java 파일 실행

1) java 파일 컴파일

javac -d . Test.java

 - 디렉토리 안에 자바파일을 컴파일하여 클래스 생성

 

ex) 여러 lib jar 파일의 클래스 패스 연결해서 컴파일 

javac -d . -cp lib/hadoop-common-2.7.0.jar:lib/hadoop-distcp-2.7.3.jar:lib/hadoop-hdfs-2.6.0.jar:lib/hadoop-annotations-2.7.0.jar:lib/hadoop-mapreduce-client-core-2.3.0.jar DistCpTest.java

 

 

2) java 파일 실행

java -cp $CLASS_PATH: test.Copy TEST_TEST

 - 클래스패스를 정말 잘 설정해줘야 한다.. (NoClassDefFoundError로 고생함..ㅠㅠ)

   계속 클래스 패스를 잘 못찾아서 저는 콜론도 잘 붙여해결했습니다.

 

 ex) java -cp /home/my/test/*: test.Copy TEST_TEST

 

 

*용어정리

 -classpath: 자바 런타임이 class 파일을 찾을 때 사용하는 경로

 -cp : classpath
 -콜론(:) 클래스 패스들을 연결할 때 사용
 -점(.) java 명령어를 실행하는 디렉토리를 cp로 지정하겠다는 의미
 -d : directory

 

 

2. jar 파일 실행

  1) eclipse로 jar 파일 생성

 

 

메인 클래스를 지정해주지 않으면 no main manifest attribute, in test.jar 에러가 발생합니다.

 

 

 

  2) 생성한 jar 파일을 리눅스 서버로 이동시키고 아래 명령어를 실행합니다.

java -jar test.jar TEST

 

결과 : TEST

댓글을 달아 주세요

 

-missing block error msg

cannot obtain block length for LocatedBlock, Could not find CoarseGrainedScheduler or it has been stopped.


-check corrupt file 

hdfs fsck -list-corruptfileblocks 
hdfs fsck /{path} -openforwrite

 

 

댓글을 달아 주세요

CREATE TABLE test(a int, b string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS PARQUET TBLPROPERTIES ("parquet.compression"="SNAPPY");

 

'Programming > Hive' 카테고리의 다른 글

[Hive] beeline 접속 명령어  (0) 2019.07.05
[Hive] 테이블 스키마 컬럼 추가 방법  (0) 2019.07.05
[Hive] parquet 압축 설정  (0) 2019.05.29
[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16

댓글을 달아 주세요

delimiter를 변경하여 hive 쿼리로 파일 추출하는 방법입니다.

 

1. 아래내용에서 저장할 파일의 디렉토리 위치와 원하는 구분자, 쿼리 설정 후 hql 파일 저장

INSERT OVERWRITE LOCAL DIRECTORY './directory_name'
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM table WHERE id > 100;

 

2. 저장한 파일 실행 ( ex : test.hql)

hive -f test.hql

 

 

'Programming > Hive' 카테고리의 다른 글

[Hive] 테이블 스키마 컬럼 추가 방법  (0) 2019.07.05
[Hive] parquet 압축 설정  (0) 2019.05.29
[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16
[Hive] header 제거 옵션  (0) 2019.05.16

댓글을 달아 주세요

 

리눅스 서버에서 외부서버로 파일 전송할 때 scp 명령어를 사용합니다.

주기적으로 파일을 전송해야 할 경우 아래 내용 스크립트 작성에 참고 해주세요.

 

-scp 사용법

expect << EOF
spawn scp /경로/파일명 계정@아이피:/경로
expect "password:"
        send "패스워드\r"
expect eof
EOF

*용어정리

  - expect : scp 사용시 패스워드를 입력해야 하는데 인증 부분을 체크해 줄 명령어

     ex) "password:" 란 문자가 나타나면 send 로 패스워드를 입력해 줍니다.

  - spawn : expect 안에서 scp 명령어를 실행시킬때 사용 (쉘에서 리눅스 명령어 실행시키는 ``와 같은 의미)

  - \r은 패스워드 입력 후 엔터(개행문자)를 입력하기 떄문에 사용

 

-sftp 사용법 (ex: sftp 접속하여 파일 다운)

expect << EOF
spawn sftp $GET_USER@$GET_SERVER_IP
expect "ord:"
send "${GET_PASS}\r"
expect "p>"
send "cd ${GET_PATH}\r"
expect "p>"
send "mget ${GET_FILE_NM}\r"
expect "p>"
send "bye\r"
expect eof
EOF

 

 

댓글을 달아 주세요

 

1. udf.jar 파일을 hive 설치 경로의 conf 디렉토리에 저장  (해당 udf.jar)


2. .hiverc 파일의 아래 내용 추가 (conf 디렉토리 위치)

CREATE TEMPORARY FUNCTION method AS 'udf.package';  (등록할 함수명과 jar 파일에 패키지 작성)

 

3. hive-env.sh 파일의 아래 내용 추가(jar 파일 위치한 경로로 등록)

export HIVE_AUX_JARS_PATH=/home/hive/conf/udf.jar 

 

4. hive 재기동


5. 등록 함수 사용

 select method(col) from table;

 

'Programming > Hive' 카테고리의 다른 글

[Hive] parquet 압축 설정  (0) 2019.05.29
[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16
[Hive] header 제거 옵션  (0) 2019.05.16
[Hive] Delimiter 변경하는 방법  (0) 2017.04.11

댓글을 달아 주세요

 

- PID 하나씩 KILL에 매개변수로 넘겨서 다 죽임

ps -ef | grep '프로세스명' | awk '{print $2}' | xargs kill

 

 

댓글을 달아 주세요

 

리눅스에서 여러 파일들 동일한 내용을 전체 변경하거나 파일에서 원하는 내용만 삭제하고 싶을때

일일이 vi로 열어서 변경하지 않고 sed 명령어를 사용하면 유용합니다.

 

1. 1개 파일 내용 변경

sed -i 's/기존 내용/변경할 내용/g' 파일명.txt

2. 여러 파일 내용 변경

sed -i 's/기존 내용/변경할 내용/g' *.txt

3. 해당 문자가 포함된 줄 삭제

sed -i '/삭제 할 내용/d' *

4. 해당 문자가 포함된 줄만 삭제하지 않고 나머지 내용 모두 삭제 (로그에서 원하는 내용만 보고싶을때 유용)

sed -i '/삭제하지 않을 내용/!d' *

 

 

댓글을 달아 주세요

 

- FTP 계정, 패스워드 생성 방법
1. useradd userID (계정 생성)
2. passwd userID (패스워드 설정)


- FTP 계정 패스워드 만료되지 않도록 설정
1. chage -E -1 -I 0 -m 0 -M 99999 userID (변경) 
2. chage -l userID (조회)


- FTP 계정 패스워드 변경
1. root or sudo (root 계정으로 접속)
2. sudo passwd ${user_id} (패스워드 변경)

 

댓글을 달아 주세요

 

ftp 압축 파일 업로드 할 때 binary 모드 사용해야 파일 깨지지 않고 정상 업로드 됩니다. (자주 까먹는 부분..;;)

 

아래 쉘은 ftp put하는 샘플 코드 입니다.

ftp -n 127.0.0.1 << EOF
quote USER $user
quote PASS $pass
cd $put_path
lcd $local_path
binary
put $file_nm
bye
EOF

 

## binary 모드로 업로드 하지 않으면 일반 텍스트 형태로 올라가 압축 해제 시 아래 에러 메시지가 발생

gzip : test.csv.gz: invalid compressed data--format violated

 

 

댓글을 달아 주세요

 

쉘에서 date 명령어를 많이 사용하는데 여러가지 사용방법입니다. (yyyyMMdd 포맷)

 

1. 현재일자 표현 (당일)

`date +%Y%m%d`

2. 이전 날짜, 이후 날짜 표현 (과거,미래 등)

   - 아래 표현식에서 선호하는 방식 사용하면 됩니다. 

## 현재 일자에서 하루 전
`date -d '1 day ago' '+%Y%m%d'`
`date +%Y%m%d -d -1day`

## 현재 일자에서 하루 후
`date -d '1 day' '+%Y%m%d'`
`date +%Y%m%d -d +1day`

## 현재 일시에서 한시간 전
`date +%Y%m%d%H -d -1hour`

## 현재 일시에서 한시간 후
`date +%Y%m%d%H -d +1hour`

3. 입력받은 변수 날짜의 이전,이후 표현 

## 입력 받은 날짜 변수에 일 더하기
`date "--date=$dt -d +${i}day" +%Y%m%d`

## 입력 받은 날짜,시간 변수에 시간 빼기
`date -d "$dt $hh -2hour" +%Y%m%d%H`

 

 

댓글을 달아 주세요

 

파일 인코딩 변환할 때 일일이 파일 이름 변경하지 않고 아래 명령어로 쉽게 일괄 변경 가능하네요.

find . -type f -execdir iconv -f euckr -t utf-8 {} -o {}.tmp \; -execdir mv -f {}.tmp {} \;

출처: https://wookmania.tistory.com/22 [코드의추억]

 

 

*파일 하나만 인코딩 변환할 때는 아래 방법 이용하시면 됩니다.

 

-리눅스에서 파일 인코딩 확인
file -bi 파일명
ex) file -bi tmp.txt
결과 : text/x-c++; charset=utf-8

-인코딩 변환
EUC-KR -> UTF-8 파일 인코딩 변경
iconv -c -f euc-kr -t utf-8 mergefile > mergefile

 

댓글을 달아 주세요

 

shell 스크립트에서 제일 많이 사용되는 for문의 3가지 사용법입니다.

상황에 맞게 사용하시면 됩니다.

 

1. 배열로 저장한 값 읽어오는 방식

HH_ARR=("00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23")
for hh in "${HH_ARR[@]}"; do
	echo $hh
done

 

2. 파일을 읽어서 처리하는 방식 (text 파일을 cat명령어로 실행하여 1줄씩 읽어옴)

for list in `cat text`
do
	echo "$list"
done

 

3. index 값 증가시키며 처리하는 방식

for (( i=0; i<10; i++ )) do
       echo "$i"
done

 

 

댓글을 달아 주세요

 

리눅스에서 vi 또는 데몬 등 실행 스크립트를 수행해서 한글을 다뤄야 하는 경우가 있는데 별도로 설정을 해주지 않으면 한글깨짐 문제로 파일을 제대로 사용할 수가 없습니다.

그럴 경우 간단하게 아래 설정 추가하면 됩니다.

 

/etc/profile에 아래 export 추가하거나

실행하고자 하는 데몬, 스크립트에 추가해도 됩니다.

 

export LANG="ko_KR.UTF-8"

 

 

 

댓글을 달아 주세요

 

CREATE DATABASE IF NOT EXISTS db_nm;

DROP TABLE IF EXISTS db_nm.table_nm;

CREATE EXTERNAL TABLE IF NOT EXISTS db_nm.table_nm ( 
a string comment 'a',
b string comment 'b',
c string comment 'c'
) 
comment 'table comment'
PARTITIONED BY (DT STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
NULL DEFINED AS '' 
STORED AS TEXTFILE 
LOCATION 'hdfs://' 
;

 

'Programming > Hive' 카테고리의 다른 글

[Hive] 쿼리로 파일 추출  (0) 2019.05.29
[Hive] udf 함수 등록 및 사용 방법  (0) 2019.05.23
[Hive] 스키마 샘플  (0) 2019.05.16
[Hive] header 제거 옵션  (0) 2019.05.16
[Hive] Delimiter 변경하는 방법  (0) 2017.04.11
[Hive] 테이블 이름 변경하는 방법  (0) 2017.02.15

댓글을 달아 주세요