项目作者: amit-siddhu

项目描述 :
Bitserv data analytics platform
高级语言: Java
项目地址: git://github.com/amit-siddhu/bitserv.git
创建时间: 2017-05-12T08:25:18Z
项目社区:https://github.com/amit-siddhu/bitserv

开源协议:

下载


Bitserv data analytics Platform

Technologies involved:

  • Java
  • RabbitMQ
  • BigQuery

Data format:

  1. Target - Can be dataset or table.

    target:

    a. dataset
    b. table

  2. Action - Action depends on target.

    a. dataset

    action:

    1. create
    2. update
    3. delete

    b. table:

    action:

    1. create
    2. update
    3. insert
    4. delete
  3. data - Data must support given action on the target.

Sample data format for above action:

CREATE DATASET:

  1. {
  2. 'target': 'dataset',
  3. 'action': 'create',
  4. 'data': {
  5. 'schema': {
  6. 'name': 'testDataset'
  7. }
  8. }
  9. }

UPDATE DATASET:

  1. {
  2. 'target': 'dataset',
  3. 'action': 'update',
  4. 'data': {
  5. 'schema': {
  6. 'name': 'testDataset',
  7. 'newFriendlyName': 'friendlyTestDataset'
  8. }
  9. }
  10. }

DELETE DATASET:

  1. {
  2. 'target': 'dataset',
  3. 'action': 'delete',
  4. 'data': {
  5. 'schema': {
  6. 'name': 'testDataset'
  7. }
  8. }
  9. }

CREATE TABLE:

  1. {
  2. 'target': 'table',
  3. 'action': 'create',
  4. 'data': {
  5. 'schema': {
  6. 'name': 'testTable',
  7. 'dataset': 'testDataset',
  8. 'fields': [
  9. {
  10. 'name': 'expired',
  11. 'type': 'boolean',
  12. 'mode': 'required',
  13. 'description': 'true if quote is expired'
  14. },
  15. {
  16. 'name': 'screenshot',
  17. 'type': 'bytes',
  18. 'mode': 'nullable',
  19. 'description': 'raw screenshot image'
  20. },
  21. {
  22. 'name': 'registrationDate',
  23. 'type': 'date',
  24. 'mode': 'nullable',
  25. 'description': 'Vehicle registration date'
  26. },
  27. {
  28. 'name': 'createdOn',
  29. 'type': 'datetime',
  30. 'mode': 'nullable',
  31. 'description': 'quote created datetime'
  32. },
  33. {
  34. 'name': 'id',
  35. 'type': 'integer',
  36. 'mode': 'required'
  37. },
  38. {
  39. 'name': 'response',
  40. 'type': 'record',
  41. 'fields': [
  42. {
  43. 'name': 'finalPremium',
  44. 'type': 'float'
  45. },
  46. {
  47. 'name': 'idv',
  48. 'type': 'integer',
  49. 'mode': 'repeated'
  50. }
  51. ]
  52. },
  53. {
  54. 'name': 'insurerQuotes',
  55. 'type': 'record',
  56. 'mode': 'repeated',
  57. 'description': 'Individual insurer quotes',
  58. 'fields': [
  59. {
  60. 'name': 'premium',
  61. 'type': 'float',
  62. 'mode': 'nullable'
  63. },
  64. {
  65. 'name': 'insurer',
  66. 'type': 'string',
  67. 'mode': 'required',
  68. 'description': 'Insurer name'
  69. },
  70. {
  71. 'name': 'cost',
  72. 'type': 'time',
  73. 'mode': 'nullable'
  74. },
  75. {
  76. 'name': 'createdOn',
  77. 'type': 'timestamp',
  78. 'mode': 'nullable'
  79. }
  80. ]
  81. }
  82. ]
  83. }
  84. }
  85. }

UPDATE TABLE:

  1. {
  2. 'target': 'table',
  3. 'action': 'update',
  4. 'data': {
  5. 'schema': {
  6. 'dataset': 'testDataset',
  7. 'table': 'testTable',
  8. 'newFriendlyName': 'friendlyTestTable'
  9. }
  10. }
  11. }

DELETE TABLE:

  1. {
  2. 'target': 'table',
  3. 'action': 'delete',
  4. 'data': {
  5. 'schema': {
  6. 'dataset': 'testDataset',
  7. 'name': 'testTable'
  8. }
  9. }
  10. }

INSERT INTO TABLE:

  1. {
  2. 'target': 'table',
  3. 'action': 'insert',
  4. 'data': {
  5. 'schema': {
  6. 'name': 'testTable',
  7. 'dataset': 'testDataset',
  8. 'rows': [
  9. {
  10. 'insertId': '123456',
  11. 'json': {
  12. 'expired': 'true',
  13. 'screenshot': 'Cg0NDg0',
  14. 'registrationDate': '2017-5-16',
  15. 'createdOn': '2017-05-16 21:52:21.12',
  16. 'id': '123456',
  17. 'response': {
  18. 'finalPremium': '23769',
  19. 'idv': [
  20. '855000',
  21. '885000',
  22. '915000'
  23. ]
  24. },
  25. 'insurerQuotes': [
  26. {
  27. 'premium': '23768.55',
  28. 'insurer': 'oriental',
  29. 'cost': '0:0:3.123',
  30. 'createdOn': '1494929154'
  31. },
  32. {
  33. 'premium': '21768.55',
  34. 'insurer': 'kotak',
  35. 'cost': '0:0:1.123',
  36. 'createdOn': '1494929155'
  37. }
  38. ]
  39. }
  40. },
  41. {
  42. 'insertId': '123457',
  43. 'json': {
  44. 'expired': 'false',
  45. 'screenshot': 'Cg0NDg0',
  46. 'registrationDate': '2017-5-15',
  47. 'createdOn': '2017-06-15 21:52:21.12',
  48. 'id': '123457',
  49. 'response': {
  50. 'finalPremium': '23769',
  51. 'idv': [
  52. '855000',
  53. '885000',
  54. '915000'
  55. ]
  56. },
  57. 'insurerQuotes': [
  58. {
  59. 'premium': '24768.55',
  60. 'insurer': 'oriental',
  61. 'cost': '0:0:3.123',
  62. 'createdOn': '1494929154'
  63. }
  64. ]
  65. }
  66. }
  67. ]
  68. }
  69. }
  70. }