shell
hadoop
pig有時候需要建立帶有空格的資料夾,雖然這不是乙個好的習慣,但是偶爾會遇到。用的最多的是很多時候需要進入帶有空格的資料夾,如"a b"是乙個資料夾名。
建立:
mkdir
"a b"
mkdir
'a b'
mkdir a\ b
進入:
cd
"a b"
cd'a b'
cd a\ b
由上可見,需要在帶有空格的資料夾名前面加上引號(單引號或者雙引號),另一種方法是在空格前面加\,\的意思是後面還有字元的意思。
切記,直接輸名字是無法操作成功的,如已經建立了資料夾"a b",直接終端輸入cd a b會出現沒有a資料夾的錯誤。而如果沒有建立"a b"資料夾,使用mkdir a b,會建立兩個資料夾,乙個名字為a,乙個為b。
linux 技巧:讓程序在後台可靠執行的幾種方法
我們經常會碰到這樣的問題,用 telnet/ssh 登入了遠端的 linux 伺服器,執行了一些耗時較長的任務, 結果卻由於網路的不穩定導致任務中途失敗。如何讓命令提交後不受本地關閉終端視窗/網路斷開連線的干擾呢?
場景:
如果只是臨時有乙個命令需要長時間執行,什麼方法能最簡便的保證它在後台穩定執行呢?
hangup 名稱的來由
在 unix 的早期版本中,每個終端都會通過 modem 和系統通訊。當使用者 logout 時,modem 就會結束通話(hang up)**。 同理,當 modem 斷開連線時,就會給終端傳送 hangup 訊號來通知其關閉所有子程序。
解決方法:
我們知道,當使用者登出(logout)或者網路斷開時,終端會收到 hup(hangup)訊號從而關閉其所有子程序。因此,我們的解決辦法就有兩種途徑:要麼讓程序忽略 hup 訊號,要麼讓程序執行在新的會話裡從而成為不屬於此終端的子程序
nohup 的用途就是讓提交的命令忽略 hangup 訊號。讓我們先來看一下 nohup 的幫助資訊:
nohup(1) user commands nohup(1)
name
nohup - run a command immune to hangups, with output to a non-tty
synopsis
nohup command [arg]...
nohup option
description
run command, ignoring hangup signals.
--help display this help and exit
--version
output version information and exit
可見,nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 檔案中。一般我們可在結尾加上"&"來將命令同時放入後台執行,也可用">filename 2>&1"來更改預設的重定向檔名。
nohup 示例
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#
nohup ./*.sh parameters > test.log 2>&1 &
每天乙個linux命令:tail
tail 命令從指定點開始將檔案寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日誌檔案,tail -f filename會把filename裡最尾部的內容顯示在螢幕上,並且不斷重新整理,使你看到最新的檔案內容.。
linux >和》的區別
>> 是追加內容
> 是覆蓋原有內容
示例:
bogon:desktop wenxuechao$ echo
'abc'
> test.txt
bogon:desktop wenxuechao$ echo
'123'
>> test.txt
執行效果,第一句命令會在桌面建立個test.txt的檔案,並且將abc寫到檔案中。
第二句命令,會在檔案下方,再次寫入內容。
#!/bin/bash
startdate=
$1#2018-12-01
period=
$2#19
enddate=
`date -d "$startdate
$period days" +"%y-%m-%d"
`echo
"runing period: $startdate -- $enddate"
rundate=
$startdate
while
(( $period>=0))
doecho
"-----------------------start running $rundate----------------------"
echo -e "\n"
#pig -p logdate=$rundate smartbanner.pig
echo
"------------------------finish running $rundate------------------------"
echo -e "\n\n"
rundate=
`date -d "$rundate 1 days" +"%y-%m-%d"
` let
"period--"
done
chmod +x ./*.sh
./*.sh
sh指令碼執行報錯:/bin/sh^m:bad interpreter: no such file or directory
解決方案:
關於shell指令碼提示no such file or directory的解決辦法和原因
linux執行shell指令碼提示no such file or directory錯誤的解決辦法
vim filename
:set fileencoding #檢視檔案編碼
:set fileformat=unix #在vim命令模式下改變檔案格式
:x!#儲存文件
hadoop fs -ls
hadoop fs -text */part* > local file
原創apache-pig的一些基礎概念及用法總結(2)/
「scalar has more than one row in the output」錯誤的乙個原因
遇到了這個錯誤?我來演示一下如何復現這個錯誤。
假設有兩個檔案:
[root@localhost ~]$ cat a.txt
1 23 4
[root@localhost ~]$ cat b.txt
3 45 6
現在我們來做乙個join:
a = load 'a.txt' as (col1: int, col2: int)
;b = load 'b.txt' as (col1: int, col2: int)
;c = join a by col1, b by col1;
d = foreach c generate a.col1;
dump d;
這段**是必然會fail的,錯誤提示為:
org.apache.pig.backend.executionengine.execexception: error 0: scalar has more than one row in the output. 1st : (1,2), 2nd :(3,4)
乍一看,似乎**簡單得一點問題都沒有啊?其實仔細一看,「a.col1」的寫法根本就是錯誤的,應該寫成「a::col1」才對,因為你只要 describe 一下 c 的schema就明白了:
c:
實習的第一周
本週開始,我們專業就進入實習了。這週是實習的第一周,也是複習的第一周。第一周的實習主要是學習,但大部分時間我們都在複習。不過這週的複習效果很不好,說實話,現在都還不知道該如何複習,做題的時候想看知識點,看知識點的時候想做題,結果啥都沒弄成。現在想想,大部分的時間都浪費在糾結怎麼複習上了,唉!考試將近...
第一周總結
第一周學習總結 第一周,我們有學習,計算機的發展,起源,計算機的各種進化,還有計算機的概念,計算機的語言,計算機的組成這些等等。讓我深刻的意識到這是很龐大的一門課程,同時也對我們接下來要學習的課程充滿了期待。對於我自己來說,第一周的學習我還是覺得挺不錯的,挺開心的,能認識到這麼多的朋友,這麼多的知識...
第一周總結
第一周這麼快就過去了,剛開學第一周,沒能擠出很多時間來學習,週六看了一天的課件,把老師給的三個課件看了個遍,線段樹講解和 裡都有很多題目,通過講解更徹底的了解了一下線段樹的原理,線段樹構造,區間查詢,單點更新,區間更新都更具體的講解了一下。後面還有常用的一些模版,也研究了一下,熟悉了具體的原理。主要...