Все данные могут иметь значение существования, только участвуя в вычислении для создания значения. Большие данные не исключение. Вычислительные возможности больших структурных данных определяют диапазон практического применения больших данных. В этой статье я хотел бы представить несколько распространенных методов вычисления: API, Script, SQL и SQL-подобные языки.
API : «API» здесь относится к автономному методу доступа к API без использования JDBC или ODBC. Давайте возьмем MapReduce в качестве примера. MapReduce предназначен для экономичного выполнения параллельных вычислений с самого нижнего уровня. Таким образом, MapReduce предлагает превосходное горизонтальное масштабирование, горячую замену и экономическую эффективность. MapReduce — это один из компонентов Hadoop с открытым исходным кодом и обильными ресурсами.
Образец кода:
  public void reduce(Text key, Iterator<Text> value,
  OutputCollector<Text, Text> output, Reporter arg3)
  throws IOException {
  double avgX=0;
  double avgY=0;
  double sumX=0;
  double sumY=0;
  int count=0;
  String [] strValue = null;
  while(value.hasNext()){
  count++;
  strValue = value.next().toString().split("\t");
  sumX = sumX + Integer.parseInt(strValue[1]);
  sumY = sumY + Integer.parseInt(strValue[1]);
  }
  avgX = sumX/count;
  avgY = sumY/count;
  tKey.set("K"+key.toString().substring(1,2));
  tValue.set(avgX + "\t" + avgY);
  output.collect(tKey, tValue);
  }
Поскольку принятый универсальный язык программирования не подходит для специализированных вычислений данных, MapReduce менее способен, чем SQL и другие специализированные языки вычислений в вычислительной технике. Плюс, это неэффективно в разработке. Неудивительно, что программисты вообще жалуются, что это «больно». Кроме того, жесткая структура MapReduce приводит к относительно более низкой производительности.
Есть несколько продуктов, использующих API, и MapReduce является наиболее типичным среди них.
Скрипт : «Скрипт» здесь относится к специализированному скрипту для вычислений. Возьмите esProc в качестве примера. esProc предназначен для улучшения вычислительных возможностей Hadoop. Таким образом, в дополнение к недорогому горизонтальному масштабированию, он также предлагает высокую производительность, большие вычислительные возможности и удобные вычисления между разнородными источниками данных, особенно идеально подходящие для достижения сложной вычислительной цели. Кроме того, это скрипт в виде сетки, характеризующийся высокой эффективностью разработки и полными функциями отладки.
Образец кода:
| 
 A  | 
 В  | 
|
| 
 1  | 
 = Файл ( «HDFS: //192.168.1.200/data/sales.txt») .size ()  | 
 //размер файла  | 
| 
 2  | 
 = 10  | 
 // количество заданий  | 
| 
 3  | 
 = К (А2)  | 
 // 1 ~ 10, 10 задач  | 
| 
 4  | 
 = A3. (~ * INT (A1 / A2))  | 
 //список параметров для запуска поз  | 
| 
 5  | 
 = А3. ((~ -1) * INT (A1 / A2) + 1)  | 
 // список параметров для конечного положения  | 
| 
 6  | 
 = callx («groupSub.dfx», A5, A4; [«192.168.1.107:8281», «192.168.1.108:8281»])  | 
 // вызов подпрограммы, 10 задач на 2 параллельных узла  | 
| 
 7  | 
 = A6.merge (EmpId)  | 
 // результат слияния  | 
| 
 8  | 
 =A7.group@i (EmpId; ~ .sum (totalAmount): orderAmount, ~ .max (макс): maxAmount, ~ .min (мин): MINAMOUNT, ~ .max (макс) /~.sum (количество): avgAmount)  | 
 // Подведение итогов завершено  | 
Пользователи Java могут вызывать результат из esProc через JDBC, но им разрешено вызывать результат только в виде хранимой процедуры вместо любого оператора SQL. Кроме того, esProc не является открытым исходным кодом. Это два недостатка esProc.
Скрипт широко используется в MongoDB, Redis и многих других решениях для больших данных, но он недостаточно специализирован для вычислений. Для другого примера, операция объединения нескольких таблиц для MongoDB не только неэффективно, но и включает в себя кодирование на порядок сложнее, чем в SQL или esProc.
SQL : «SQL» здесь относится к полному и полному SQL / SP, то есть ANSI 2000 и его расширенному набору. Возьмем в качестве примера Greenplum. Основными преимуществами Greenplum SQL являются мощные вычисления, высокоэффективная разработка и высокая производительность. Другие преимущества включают в себя широкое использование его языка, низкую стоимость обучения, простое обслуживание и возможность миграции — не говоря уже о его козыре: поддержка хранимых процедур для обработки сложных вычислений. Таким образом, бизнес-ценность может быть удобно использована из больших данных.
Образец кода:
CREATE OR REPLACE function view.merge_emp() returns void as $$ BEGIN truncate view.updated_record; insert into view.updated_record select y.* from view.emp_edw x right outer join emp_src y on x.empid=y.empid where x.empid is not null; update view.emp_edw set deptno=y.deptno,sal=y.sal from view.updated_record y where view.emp_edw.empid=y.empid; insert into emp_edw select y.* from emp_edw x right outer join emp_src y on x.empid=y.empid where x.empid is null; end; $$ language 'plpgsql';
Другие базы данных с аналогичной структурой MPP включают в себя Teradata, Vertical, Oracle и IBM. Их синтаксические характеристики в основном одинаковы. Недостатки аналогичны. Стоимость приобретения и текущие расходы на техническое обслуживание чрезвычайно высоки. Заряжая своих пользователей масштабом данных, так называемый недорогой Greenplum на самом деле вовсе не выгоден — это больше похоже на зарабатывание больших денег под прикрытием больших данных. Другие недостатки включают неудобную отладку, несовместимый синтаксис, длительное время простоя при расширении и неудобные вычисления с несколькими источниками данных.
SQL-подобный язык : относится к выходным интерфейсам, таким как JDBC / ODBC, и ограничивается только теми языками сценариев, которые являются подмножеством стандартного SQL. Возьмите Hive QL в качестве примера. Самым большим преимуществом Hive QL является его способность экономически эффективно масштабироваться, оставаясь при этом удобным инструментом для разработки пользователями. Функция синтаксиса SQL хранится в Hive QL, поэтому затраты на обучение низкие, эффективность разработки и простота обслуживания. Кроме того, Hive является компонентом Hadoop. Открытый исходный код является еще одним преимуществом.
Образец кода:
SELECT e.* FROM ( SELECT name, salary, deductions["Federal Taxes"] as ded, salary * (1 – deductions["Federal Taxes"]) as salary_minus_fed_taxes FROM employees ) e WHERE round(e.salary_minus_fed_taxes) > 70000;
Слабым местом Hive QL является отсутствие поддержки хранимых процедур. Из-за этого Hive QL сложно проводить сложные вычисления и, следовательно, трудно получить действительно ценный результат. Несколько более сложные вычисления будут основаны на MapReduce. Излишне говорить, что эффективность разработки низкая. Низкая производительность и пороговое время могут рассматриваться как проблема, особенно в распределении задач, объединении в несколько таблиц, вычислении между рядами, многоуровневом запросе и упорядоченной группировке, а также в реализации других алгоритмов. Таким образом, Hive QL довольно сложно реализовать приложение Hadoop для больших данных в реальном времени.
Есть также некоторые другие продукты с SQL-подобными языками — например, MongoDB — они все еще хуже, чем Hive.
Доступные в настоящее время методы вычисления больших данных — это не более чем 4 типа API, Script, SQL и SQL-подобные языки. Жаль, что они неуклонно развиваются и появятся все более и более рентабельные, мощные, практичные и полезные продукты для вычислений данных.