\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{edendekker} \pdfinfo{ /Title (apache-cassandra-cql.pdf) /Creator (Cheatography) /Author (edendekker) /Subject (Apache Cassandra CQL Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Apache Cassandra CQL Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{edendekker} via \textcolor{DarkBackground}{\uline{cheatography.com/69159/cs/17432/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}edendekker \\ \uline{cheatography.com/edendekker} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 12th October, 2018.\\ Updated 13th October, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Symbolic Link to an Encrypted LVM Volume}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ls -lrtah /var/lib/cassandra \newline lrwxrwxrwx 1 cassandra cassandra 34 Sep 9 19:13 /var/lib/cassandra -\textgreater{} \seqsplit{/media/SecureDataStore/cassandra} \newline sudo chown -R cassandra:cassandra /var/lib/cassandra \newline sudo chown -R cassandra:cassandra \seqsplit{/media/SecureDataStore/cassandra}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Logging Into CQLSH}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{export CQLSH\_HOST=\textless{}rpc address\textgreater{} \newline export CQLSH\_PORT=9042 \newline cqlsh -u cassandra \newline Password: {\bf{{\emph{}}}} \newline cassandra@cqlsh\textgreater{} exit} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Creating DB Users, Roles, and Access}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://www.datastax.com/dev/blog/role-based-access-control-in-cassandra} \newline \newline CREATE ROLE supervisor; \newline GRANT MODIFY ON warehouse.orders TO supervisor; \newline GRANT SELECT ON warehouse.addresses TO supervisor; \newline \newline CREATE ROLE bob WITH PASSWORD = 'password' AND LOGIN = true; \newline GRANT supervisor TO bob; \newline \newline LIST ALL PERMISSIONS OF bob; \newline \newline CREATE ROLE office\_admin; \newline GRANT SELECT ON KEYSPACE office TO office\_admin; \newline GRANT MODIFY ON KEYSPACE office TO office\_admin; \newline GRANT office\_admin TO bob; \newline \newline REVOKE MODIFY ON KEYSPACE office TO office\_admin;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Exploring Key Spaces and Tables}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{DESCRIBE keypsaces; \newline USE \textless{}yourkeyspace\textgreater{}; \newline DESCRIBE tables;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Minimum Dev Configuration}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{sudo nano \seqsplit{/etc/cassandra/cassandra.yaml} \newline cluster\_name: 'Name of Cluster' \newline rpc\_address: \textless{}Your IP. Do not use a FQDN\textgreater{} \newline authenticator: PasswordAuthenticator \newline \newline sudo chmod 777 \seqsplit{/etc/security/limits.conf} \newline echo "{\emph{ - memlock unlimited" \textgreater{}\textgreater{} \seqsplit{/etc/security/limits.conf} \newline echo "}} - nofile 100000" \textgreater{}\textgreater{} \seqsplit{/etc/security/limits.conf} \newline echo "{\emph{ - nproc 32768" \textgreater{}\textgreater{} \seqsplit{/etc/security/limits.conf} \newline echo "}} - as unlimited" \textgreater{}\textgreater{} \seqsplit{/etc/security/limits.conf} \newline sudo chmod 644 \seqsplit{/etc/security/limits.conf}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Start Stop Service}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{sudo -u cassandra cassandra \newline ps -ef | grep cassandra \newline sudo kill -9 \textless{}PID of cassandra\textgreater{}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Python Batch Inserts}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{from cassandra.auth import PlainTextAuthProvider \newline from cassandra.cluster import Cluster \newline from cassandra.query import BatchStatement \newline auth\_provider\_omni = PlainTextAuthProvider( \newline \seqsplit{username=settings.cassandra\_username}, \newline \seqsplit{password=settings.cassandra\_password} \newline ) \newline cluster\_omni = Cluster( \newline {[}settings.cassandra\_host{]}, \newline \seqsplit{auth\_provider=auth\_provider\_omni}, \newline \seqsplit{port=settings.cassandra\_port} \newline \# ssl\_options=ssl\_opts \newline ) \newline conn = \seqsplit{self.cluster\_omni.connect(} \newline \seqsplit{settings.cassandra\_keyspace\_name} \newline ) \newline \newline batch = BatchStatement() \newline sql\_str = ( \newline 'INSERT INTO ' + TABLE\_PREFIX + '\_' + \newline location.lower() + '\_' + \newline demographic.lower() + \newline ' (date,value) VALUES (?,?)' \newline ) \newline sql = conn.prepare(sql\_str) \newline for value in values: \newline batch.add(sql, value{[}'date'{]}, value{[}'value'{]}) \newline conn.execute(batch) \newline batch.clear() \newline conn.shutdown()} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}